【发布时间】:2011-08-20 06:56:48
【问题描述】:
(对于缺少或正确的链接深表歉意;系统不允许我添加超过两个。)
不幸的是,我已经学会了不应该乱用 Mac OS X(特别是 10.6.8)中的默认 Python 安装的艰难方法。
在使用python.org 2.6.6 (http://www.python.org/getit/releases/2.6.6/) 和2.5.4 (http://www.python.org/getit/releases/2.5.4/) 安装程序后,我有了比Apple 提供的更成熟的Python 版本(非常适合开发),但是已经破坏了核心系统功能(这对其他一切都不利。)到目前为止,最明显的中断是在尝试运行 namebench (https://code.google.com/p/namebench/)、Blink (http://icanblink.com/) 和 Mercurial (https://www.mercurial-scm.org/) 时。从我能收集到的信息来看,这取决于路径。
在默认安装中,路径应类似于this question 中概述的内容。相反,我的看起来像这样:
$ /usr/bin/python2.6 -V
Python 2.6.6
$ which python
/usr/bin/python
$ python
Python 2.6.6 (r266:84374, Aug 31 2010, 11:00:51)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for i in sys.path:
... print i
...
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg
/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
(与 2.5 类似,但为简单起见,我将坚持使用 2.6。)
问题似乎是不包含:
- /Library/Python/2.6/site-packages/*.egg
- /Library/Python/2.6/site-packages
- /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
- /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python
这解释了为什么 Blink 和 namebench 找不到 PyObjC (Is PyObjC pre-installed on OSX SL?) 和 Mercurial 找不到它的模块(在 /Library/Python/2.6 中)
Python 错误跟踪器中的问题#4865 部分解决了这个特定问题,该问题已在 2.7 及更高版本中得到修复。但是因为它是“功能请求而不是错误修复”,所以还没有被向后移植到 2.5 和 2.6。即便如此,查看已提交的修复 (http://hg.python.org/lookup/r70778),我不确定它是否解决了缺少对“Extras”目录的引用。
我知道我可以通过手动更改 site.py 来手动添加 Python 的路径。我也可以使用 PYTHONPATH 环境变量。我宁愿不通过更改 site.py 造成任何进一步的损害,并且更改 PYTHONPATH 仅对使用我的用户帐户从 shell 运行的脚本/应用程序有效。
我能否让这些更新版本的 Python 引用与默认框架安装相同的路径?如果是这样,最好的方法是什么?如果没有,是否有可接受的回滚到系统默认值的方法?
【问题讨论】:
-
咖啡桶:欢迎来到 SO!虽然额外的信息很好,但您帖子中的某些链接是不必要的。您不需要为所有内容提供每个下载/项目页面链接,如果需要进一步澄清,以后无论如何都可以在 cmets 中要求。
-
谢谢夜莺。我可能对额外的信息有点不知所措。为以后的帖子适当地注明。