我有一个测试设置文件,我为一个简单的“hello world”脚本。我有一个名为mytest
的包,它有一个函数hello
。现在,我有一个非常简单的setup.py
。一切正常,如果我只是运行python setup.py install
。但是,如果我想将lib安装到主文件夹(python setup.py install --home=/home/blah
),该软件包将不再可用(在python中运行import mytest
给我ImportError: No module named mytest
)。
我应该手动将pth文件添加到site-packages
文件夹中吗?我尝试了(内容/home/blah/lib/python
,我的包放在哪里)和导入mytest
工作正常。不应该自动完成吗?还是我错过了什么?
编辑:
安装输出:
ago@dellbert:~/py/mytest-0.1$ python setup.py install --home=/home/ago/py/ running install running build running build_py copying src/mytest/mytest.py -> build/lib.linux-x86_64-2.6/mytest running build_scripts copying and adjusting src/main.py -> build/scripts-2.6 running install_lib copying build/lib.linux-x86_64-2.6/mytest/mytest.py -> /home/ago/py//lib/python/mytest byte-compiling /home/ago/py//lib/python/mytest/mytest.py to mytest.pyc running install_scripts copying build/scripts-2.6/main.py -> /home/ago/py//bin changing mode of /home/ago/py//bin/main.py to 755 running install_egg_info Removing /home/ago/py//lib/python/mytest-0.1.egg-info Writing /home/ago/py//lib/python/mytest-0.1.egg-info
和setup.py:
from distutils.core import setup setup(name='mytest', description='test', author='Ago', author_email='email', version='0.1', package_dir={'mytest': 'src/mytest'}, packages=['mytest'], scripts=['src/main.py'] )
文件夹结构:
-src: -mytest: __init__.py mytest.py main.py setup.py
main.py
只是一个可执行文件,它导入mytest并调用函数来打印hello world。但我试图在python中运行import mytest
来查看是否安装了lib。
我有兴趣看到python setup.py install --home=/home/blah
命令的完整输出。如果目录不存在,或者不支持pth文件,您应该得到某种警告或错误,我相信安装实际上会失败。
查看setup.py文件也会有所帮助,因为它可能会把东西放在那里会导致破坏。
似乎python至少统一了Unix和Windows环境中的参数。看看今天的python参考(https://docs.python.org/2/install/index.html,2017年12月),它表明在两个操作系统中你都可以使用--prefix=<head installation path>
。看一下参考文献,"Alternate installation: Unix (the prefix scheme)"和"Alternate installation: Windows (the prefix scheme)"。我刚刚使用Oct2Py(Octave-to-Python转换器)对它进行了测试,这与使用easy_install或pip进行安装很麻烦,但是这样做的工作非常好。
然后你的python包(假设你使用Python 2.7)<head installation path>/lib/python2.7/site-packages
或<head installation path>/lib/python2.7/dist-packages
。