当我跑步时
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类。
我可以使用代码添加更多路径
sys.path.insert(0, MORE_PATH)
根据迈克尔的回答,我查看了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源代码中。
大多数内容都是在Python中设置的site.py,启动解释程序时会自动将其导入(除非您使用-S选项启动它)。初始化期间在解释器中很少设置路径(您可以通过使用来启动python来找出路径-S)。
site.py
-S
另外,某些框架(例如我认为的Django)sys.path在启动时会进行修改以满足其要求。
sys.path
该site模块有一个很好的文档,带有注释的源代码,并且如果您通过来运行它,则会打印出一些信息python -m site。
site
python -m site