Linux
PYTHONPATH 環境變數…之後如何創建每個子目錄?
我目前這樣做:
PYTHONPATH=/home/$USER:/home/$USER/respository:/home/$USER/repository/python-stuff
我怎樣才能使 PYTHONPATH 可以包含所有子目錄?
PYTHONPATH = /home/$USER/....and-all-subdirectories
PYTHONPATH 不是這樣工作的。PYTHONPATH 對其搜尋路徑的處理與 shell PATH 不同。假設我這樣做:
$ mkdir /home/jsmith/python $ cd /home/jsmith/python $ touch a.py b.py
這將在 Python 中起作用(
sys.path
將包括目前目錄):$ cd / $ PYTHONPATH=/home/jsmith/python python2.6 Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51) >>> import a, b # Works >>> quit()
__init__.py
但是,如果目錄中存在子目錄,則將其視為包,否則將被 PYTHONPATH忽略:$ mkdir /home/jsmith/python/pkg $ cd /home/jsmith/python/pkg $ touch __init__.py c.py d.py $ cd / $ PYTHONPATH=/home/jsmith/python python2.6 Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51) >>> import a, b # Works >>> import c Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named c
要獲取該子目錄中的某些內容,這將起作用:
>>> from pkg import c # Works >>> import pkg.c # Works
要推出添加 PYTHONPATH 中每個子目錄的解決方案,您需要顯式地將每個文件夾添加到 PYTHONPATH 或以
sys.path
程式方式。這種行為是有意的,其行為與shell PATH 完全不同。鑑於解釋器在這方面對包的支持,肯定有更好的方法來完成你所追求的嗎?