os.path.dirname(__ FILE__)可能是你在找什麼。模塊中的__file__返回模塊加載的路徑。
假設yourmodule是含有Something.py一個文件夾,在setup.py:
import os
#setup(...) call here
from yourmodule import Something
print os.path.dirname(Something.__file__)
唯一的皺紋用這將是,如果你的文件結構具有yourmodule在同一目錄作爲setuputils。在這種情況下,python加載器會優先加載yourmodule.Some當前目錄。
兩個有點hackish的,但有效的選擇顛覆,可能是要麼
從Python路徑刪除當前目錄下,迫使其從現在的站點包存在的文件加載:
進口SYS 的sys.path = sys.path中[1:]
導入語句之前臨時重命名文件夾yourmodule。
對於選項1,整個事情是:
import os
import sys
#setup(...) call here
#Remove first entry in sys.path which is current folder (probably impl dependent, but for practical purposes is consistent)
sys.path = sys.path[1:]
from yourmodule import Something
print os.path.dirname(Something.__file__)
我只是用我的setup.py的一個測試,這和它的偉大工程。祝你好運!