永久删除python sys.path中的内容

时间:2014-10-20 17:53:35

标签: python macos python-2.7 numpy macports

使用Mac OSX 10.8.5和Python 2.7.8。 Python是使用MacPorts安装的,我已经确认MacPorts安装目前是我正在使用的。我在将某些软件包导入到我的MacPorts安装时遇到问题,特别是当其中一个已安装的软件包与System Python使用的旧版本冲突时。例如,我已经在sys.path中验证了系统安装的软件包导致导入当前版本的Numpy时出现问题。

python
>>> import numpy
>>> numpy.__version__
'1.6.1' #Bad Version

python
>>> import sys
>>> sys.path.remove('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python')
>>> import numpy
>>> numpy.__version__
'1.9.0' #Good Version

问题是'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python'从未通过常规方式显式添加到$ PYTHONPATH或$ PATH,所以我不知道它是怎么回事被添加到sys.path。我想永久阻止从这条路径中导入东西。

我已经尝试过:

我在这里的答案中读到了关于site.py What sets up sys.path with Python, and when?但是当我在问题中尝试解决方案时,它们不起作用。我尝试手动编辑site.py并将语句sys.path = filter (lambda a: not a.startswith('/System'), sys.path)添加到main()函数。但是,即使在将语句放入site.py

之后,仍会出现错误路径

错误的路径来自我的计算机操作系统使用的目录,因此删除/ System / Library下的numpy路径不是一个选项。有什么方法可以解决我的问题,保持'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python'下的文件自动添加到sys.path吗?

1 个答案:

答案 0 :(得分:1)

事实证明,damirv在What sets up sys.path with Python, and when?中提出的解决方案确实有效。我在第一次尝试时错误地实施了他的建议。必须找到工作python版本正在使用的正确site.py并将sys.path = filter (lambda a: not a.startswith('/System'), sys.path)放在main()函数的最后。对于我的MacPorts Python安装,该路径为/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py。

早些时候尝试这个解决方案时,我错误地将代码行添加到系统安装的Python中/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/site.py,这显然没有做任何事情在启动MacPorts安装版本时修复我的导入。