环境:debian 4.0
Python 2.4
我的'项目'安装在:
/usr/lib/python2.4/site-packages/project。
但是我想使用我的工作副本而不是安装的副本:
/家/我的/ dev /项目/ src目录
所以我所做的是:
导出PYTHONPATH = / home / me / dev / project / src
IPython的
导入frc中的foo
foo.__file__
*/usr/lib/python2.4/site-packages/project/foo.py*
而不是:
/home/me/dev/project/src/project/foo.py
为什么?我试着检查一下(完成上面的导出),我看到的是:
import sys,os
sys.path中
[ '', '在/ usr / bin' 的, '/usr/lib/python2.4/site-packages', '/家/我的/ dev /项目/ src目录', '/usr/lib/python24.zip', '/usr/lib/python2.4', '/usr/lib/python2.4/plat-linux2', '/usr/lib/python2.4/lib-tk', '/usr/lib/python2.4/lib-dynload', '/usr/local/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages/PIL', '/var/lib/python-support/python2.4', '/usr/lib/python2.4/site-packages/IPython/Extensions', '/home/me/.ipython']
os.environ [ 'PYTHONPATH']
/家/我的/ dev /项目/ src目录的
答案 0 :(得分:6)
根据python文档,这是预期的行为:https://docs.python.org/2.4/lib/module-sys.html:
请注意脚本目录是 在插入条目之前插入 因为PYTHONPATH。
在python-2.6下,它是不同的:http://docs.python.org/tutorial/modules.html#the-module-search-path
答案 1 :(得分:5)
我发现了这个问题(当有人指我Where is Python's sys.path initialized from?时,我很早就错过了。)
似乎easy_install创建了一个pth文件/usr/lib/python2.4/site-packages/easy-install.pth,然后由site.py加载。这将在PYTHONPATH之前的sys路径中插入site-packages路径。不太好。
答案 2 :(得分:4)
我不相信你可以控制PYTHONPATH插入实际路径列表的位置。但这不是修改路径的唯一方法 - 在尝试导入项目之前,您可以自己更新sys.path。
编辑:在特定情况下,您可以使用
修改路径import sys
sys.path.insert(2, '/home/me/dev/project/src')
答案 3 :(得分:1)
我在'/ home / me / dev / project / src'之前的路径中看到'/usr/lib/python2.4/site-packages',这有关系吗?当你切换两个时会发生什么?
来自文档:
如果未设置PYTHONPATH,或者在那里找不到文件,则搜索将继续依赖于安装的默认路径
所以也许你没有像你想象的那样在你的PYTHONPATH上找到你的工作副本?
答案 4 :(得分:1)
不是您问题的直接答案,但您也可以使用virtualenv来创建开发环境。在那个virtualenv中,您可以将您的产品安装在/ home / me / dev / project / src中作为开发包:“python setup.py develop”。
这样您就不必手动更改PYTHONPATH。如果您想使用开发代码,请激活virtualenv。
答案 5 :(得分:0)
我认为你设置PYTHONPATH到/ home / me / build / project / src,因为/ home / me / dev / project / src没有出现在sys.path中,但是/ home / me / build / project / src确实
答案 6 :(得分:0)
听起来src
目录没有__init__.py
文件。这不是一个合适的包。