Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 忽略蟒蛇_Python_Path_Debian - Fatal编程技术网

Python 忽略蟒蛇

Python 忽略蟒蛇,python,path,debian,Python,Path,Debian,环境:Debian4.0 Python 2.4 我的“项目”安装在: /usr/lib/python2.4/site-packages/project 但我想使用我的工作副本,而不是安装在以下位置的副本: /home/me/dev/project/src 所以我要做的是: 导出PYTHONPATH=/home/me/dev/project/src 伊皮顿 导入src中的foo# foo.\uuuuu文件\uuuuuu */usr/lib/python2.4/site-packages/proje

环境:Debian4.0

Python 2.4

我的“项目”安装在:

/usr/lib/python2.4/site-packages/project

但我想使用我的工作副本,而不是安装在以下位置的副本:

/home/me/dev/project/src

所以我要做的是:

导出PYTHONPATH=/home/me/dev/project/src

伊皮顿

导入src中的foo#

foo.\uuuuu文件\uuuuuu

*/usr/lib/python2.4/site-packages/project/foo.py*
而不是:

/home/me/dev/project/src/project/foo.py

为什么?我尝试检查路径(已完成上述导出),我看到的是:

导入系统,操作系统

系统路径

['', “/usr/bin”, “/usr/lib/python2.4/site packages”, “/home/me/dev/project/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']

/home/me/dev/project/src


我认为您将PYTHONPATH设置为/home/me/build/project/src,因为/home/me/dev/project/src不出现在sys.path中,但/home/me/build/project/src出现在其中。

我在“/home/me/dev/project/src”之前的路径中看到“/usr/lib/python2.4/site packages”,这有关系吗?当你切换这两个时会发生什么

从文档中:

如果未设置PYTHONPATH,或者未在其中找到文件,则搜索将在依赖于安装的默认路径中继续


因此,也许您没有像您所想的那样在PYTHONPATH上找到工作副本?

我认为您无法控制PYTHONPATH插入实际路径列表的位置。但这不是修改路径的唯一方法-在尝试导入项目之前,您可以自己更新sys.path

编辑:在您的特定情况下,可以使用

import sys
sys.path.insert(2, '/home/me/dev/project/src')

根据python文档,这是预期的行为

请注意,脚本目录是 在插入的条目之前插入 由于蟒蛇的缘故


在python-2.6下则不同:

听起来好像
src
目录没有
\uuuu init\uuuu.py
文件。它不是一个合适的包。

不是对您的问题的直接回答,但您也可以使用来创建开发环境。在该virtualenv中,您可以将产品作为开发包安装在
/home/me/dev/project/src
中:“
python setup.py develop

这样,您就不必手动更改
PYTHONPATH
。如果您想使用开发代码,只需激活virtualenv即可。

我发现了问题(早些时候有人指给我看时,我错过了)



easy_install似乎创建了一个pth文件/usr/lib/python2.4/site-packages/easy-install.pth,然后由site.py加载。这将在PYTHONPATH之前的sys路径中插入站点包路径。不太好。

谢谢你,大卫。sys.path确实包含/home/me/dev/project/src,而不是/home/me/build/project/src(因为我已经重命名了其中的一些内容,所以其中有一个错误)。问题依然存在。我认为John是对的,Python将使用sys.pathYes中索引最低的模块,这很重要。PYTHON,AFAIK,应该先插入PYTHONPATH(或者就在“.”之后)。我的PYTHONPATH是正确的。但是如果您犯了错误,例如在/home/me/dev/project/src中省略了init.py文件,那么PYTHON将继续在站点包
中找到prod包您是否尝试过交换我建议的sys.path中的两项?机器工作正常:>导出PYTHONPATH=foo>ipython>import sys>sys.path=['/etc/python2.4'、'/home/me/foo'、'/usr/lib/python24.zip'、'/usr/lib/python2.4'、'/usr/lib/python2.4/plat-linux2'、'/usr/lib/python2.4/lib-dynload'、'/usr/local/lib/python2.4/site-packages'、'/usr/lib/python2.4/site-packages/var/python2.4']在机器无法正常工作的情况下,/usr/lib/python2.4/site-packages出现在列表的前面……让我们提出一些精确的问题:每个人都同意,如果我将PYTHONPATH设置为有效的模块路径,那么不管怎样,它都应该首先加载该模块?每个人都同意python尝试按照sys.path的顺序加载模块?如果aboce是正确的,为什么python不在sys.path的开头插入PYTHONPATH(在鸡蛋之后)?所以我无法强制python在何处查找模块?这对我使用ipython notebook很有效,而在命令shell中设置PYTHONPATH则不行。谢谢。我对鸡蛋没问题。:)但是为什么“/usr/lib/python2.4/site packages”出现在我的python路径之前?我如何强制PYTHONPATH比“/usr/lib/python2.4/site-pac”优先级更高kages'而不更改python文件中的sys.path?@van.我不明白。我将PYTHONPATH设置为正确的值,然后它首先加载站点包中的内容。奇怪!要更改优先级,请不要运行位于站点包中的脚本。将脚本移到其他任何位置以及脚本的目录(站点包)不会再打乱您预期的搜索.Scripts目录?我正在导入一个模块,它位于站点包/project/foo.py和/home/me/dev/project/src/project/foo.py中。为了解决这个问题,让我们假设我希望能够使用ipython运行它。@joseph。请参阅我提供的链接:对于python-2.4,它实际上是定义的行为。它是从那以后发生了变化。正如您在上面看到的,有一个。@S.lott抱歉。我说的是“init.py`is there(in
/home/me/dev/project/src
)。这只在您的项目具有
setup.py
时有效,这不是保证