关于macos:永久删除python sys.path中的内容

Permanently remove something from python sys.path

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

1
2
3
4
5
6
7
8
9
10
11
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的内容什么用Python设置sys.path,什么时候?但是,当我在问题中尝试解决方案时,它们不起作用。我尝试手动编辑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吗?


事实证明,damirv提出的解决方案是什么用Python设置sys.path,何时? 实际上确实有效。 我在第一次尝试时错误地实施了他的建议。 必须找到工作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安装版本时导入。