TL; DR:打電話site.addsitedir處理.pth文件
我不知道OS X,但PYTHONPATH和站點包其實都是一種獨立的,其中涉及到增強SYS。路徑。
Try this:
set PYTHONPATH somehow (OS dependent)
python -c "import sys; print '\n'.join(sys.path); print sys.exec_prefix; print sys.prefix"
python -S -c "import sys; print '\n'.join(sys.path);print sys.exec_prefix; print sys.prefix"
在我的Linux框,PYTHONPATH是兩次輸出的一部分 - 儘管-S在第二次運行跳過導入網站模塊切換。
現在,site.module所做的實際上是將(sys.exec_prefix,sys.prefix)和操作系統相關前綴(for linux:lib/python2.7/dist-packages)組合起來,檢查是否有任何組合是一個現有的目錄,如果是這樣的話(包括解析.pth文件)
代碼是在site.py模塊 - getsitepackages()。
def getsitepackages():
"""Returns a list containing all global site-packages directories
(and possibly site-python).
For each directory present in the global ``PREFIXES``, this function
will find its `site-packages` subdirectory depending on the system
environment, and will return a list of full paths.
"""
sitepackages = []
seen = set()
for prefix in PREFIXES:
if not prefix or prefix in seen:
continue
seen.add(prefix)
if sys.platform in ('os2emx', 'riscos'):
sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
elif os.sep == '/':
sitepackages.append(os.path.join(prefix, "lib",
"python" + sys.version[:3],
"site-packages"))
sitepackages.append(os.path.join(prefix, "lib", "site-python"))
else:
sitepackages.append(prefix)
sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
(...)
該功能最終會返回一個列表,該列表addsitedir功能中的每個元素被稱爲 - 在那一個,你有邏輯得到.pth文件的工作。
所以長話短說 - 處理.pth文件 - 在您的入門級腳本中調用site.addistedir。你也可以考慮在你的sitecustomize.py中使用它 - 只要確保你的python發行版本沒有。