【发布时间】:2011-05-15 08:43:47
【问题描述】:
当我跑步时
import sys
print sys.path
在我的 Mac(Mac OS X 10.6.5、Python 2.6.1)上,我得到以下结果。
/Library/Python/2.6/site-packages/ply-3.3-py2.6.egg ... /Library/Python/2.6/site-packages/ipython-0.10.1-py2.6.egg /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload /Library/Python/2.6/site-packages /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode它们分为 5 类。
- /Library/Python/2.6/site-packages/*.egg
- /Library/Python/2.6/site-packages
- Frameworks/Python.framework/Versions/2.6/lib/python2.6
- Frameworks/Python.framework/Versions/2.6/Extras/lib/python
- 来自 PYTHONPATH 环境变量的路径。
我可以使用代码添加更多路径
sys.path.insert(0, MORE_PATH)
- 哪些例程设置了这些路径,何时设置?
- 有些路径是用python源码内置的吗?
- 是否可以忽略使用“sys.path.insert”插入的路径?我对此很好奇,与 mod_wsgi 一样,我发现使用“sys.path.insert”找不到路径。我问了another post 这个问题。
添加
根据 Michael 的回答,我查看了 site.py,得到了以下代码。
def addsitepackages(known_paths):
"""Add site-packages (and possibly site-python) to sys.path"""
sitedirs = []
seen = []
for prefix in PREFIXES:
if not prefix or prefix in seen:
continue
seen.append(prefix)
if sys.platform in ('os2emx', 'riscos'):
sitedirs.append(os.path.join(prefix, "Lib", "site-packages"))
elif sys.platform == 'darwin' and prefix == sys.prefix:
sitedirs.append(os.path.join("/Library/Python", sys.version[:3], "site-packages"))
我还认为应该将包含 site.py 的目录名称(我的 Mac 是 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6)内置到 Python 源代码中。
【问题讨论】:
-
如果您仍然想弄清楚您之前的问题 - 您的问题很可能在于启动文件,而不是与网站导入有关。对于一个包来说,删除他们不知道的新路径是非常糟糕的做法。
-
为什么
seen不是一个集合? :P -
我找到的同一个问题的最佳答案可以是found here,这是另一个SO问题答案的链接。