PYTHONPATH系统路径差异
将目录添加到我的PYTHONPATH系统路径差异,python,Python,将目录添加到我的PYTHONPATH 目录是/usr/local/lib/python2.7/dist-packages 当我跑的时候 PYTHONPATH=/usr/local/lib/python2.7/dist-packages python -c 'import sys; print sys.path' 我在结果中找不到它。 在尝试时,我注意到以下几点: 当/usr/local/lib/python2.7作为前缀存在时,目录将从sys.path中消失,例如,以下操作正常: PYTHON
PYTHONPATH
目录是/usr/local/lib/python2.7/dist-packages
当我跑的时候
PYTHONPATH=/usr/local/lib/python2.7/dist-packages python -c 'import sys; print sys.path'
我在结果中找不到它。
在尝试时,我注意到以下几点:
当/usr/local/lib/python2.7
作为前缀存在时,目录将从sys.path
中消失,例如,以下操作正常:
PYTHONPATH=/usr/local/lib python -c 'import sys; print sys.path'
我没有在其他任何地方设置PYTHONPATH,我用sudo检查了运行它。出现路径的原因有很多。确保您没有击中以下任何一个:
- 路径必须存在,不存在的路径将被忽略。从: 不存在的目录将被静默忽略
- 删除重复项(保留第一个条目);路径被设置为绝对路径(相对于当前工作目录),并在重要的平台上不区分大小写进行比较
因此,如果在
中有一个相对路径,该路径与绝对路径相同,则只保留第一个条目sys.path
- 规范化和清理后,尝试导入
和sitecustomize
模块。它们也可以操纵usercustomize
sys.path
站点
模块作为命令行工具运行,仔细查看您的系统路径
,以及是否有要导入的用户自定义
模块:
python -m site
它将以每个条目一行的可读格式打印出您的
sys.path
。您确定路径中没有/usr/local/lib/python2.7/dist包吗?如果它已经列出,则不会添加到前面。它不是。只是一个接一个地检查了一下如果你运行这个你会得到什么PYTHONPATH=/usr/local/lib/python2.7/dist-packages python-c'import sys;在sys.path中打印“/usr/local/lib/python2.7/dist包”
False。如果我拼错了python:PYTHONPATH=/usr/local/lib/pythn2.7/dist-packages python-c'import sys;在sys.path'
true中打印“/usr/local/lib/pythn2.7/dist包”true我认为符号链接也被清除(例如,条目上的Python调用normpath
)-S标志禁用站点。使用-S,我可以导入和使用包。如果没有它,即启用站点,导入将失败。/usr/local/lib/python2.7/dist packages
中的包称为z3
。这是可行的:PYTHONPATH=/usr/local/lib/python2.7/dist-packages python-S-c'import z3'
,这会引发导入错误PYTHONPATH=/usr/local/lib/python2.7/dist-packages python-S-c'导入站点;导入z3'
@Chris:因此,sitecustomize
或usercustomize
正在执行此操作,或者site
模块已经过定制(在Debian和Ubuntu系统上就是这样的IIRC,请参阅)结果是它被删除了。这是我在顶部粘贴代码的站点模块,然后是import z3
和delta调试it@Chris:该文件的Debian/Ubuntu版本肯定不同于Python通常发布的版本。