PYTHONPATH被忽略了

时间:2009-06-16 14:27:44

标签: python path debian

环境: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目录

7 个答案:

答案 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文件。这不是一个合适的包。