0
我想創建一個github存儲庫,可以從任何克隆運行而不需要硬編碼目錄依賴關係。sys.path.append模塊相對於正在運行的腳本的路徑
讓我們在我的回購說我有一個Python腳本調用myscript.py其位於:
/d/e/f/github/myrepo/myscript/myscript.py
但我知道,我的腳本取決於總是位於一般實用工具:
/d/e/f/github/myrepo/myutils/myutils.py
這樣,我怎麼能告訴我的腳本始終加載myutils.py,其中相對路徑相對於myscript.py myutils.py總是../myutils/myutils.py
由於沒有w^myscript.py樣子:
# Import modules
import sys
sys.path.append('/d/e/f/github/myrepo/myutils/')
import myutils
正如人們現在可以看到FULLPATH到myutils.py是硬編碼的,所以如果別人克隆他們回購在自己的電腦將無法正常工作。
理想的情況下,用戶應該能夠運行myscript.py如下:
cd /d/e/f/github/myrepo/myscript/
python myscript.py -h
或者,
python /d/e/f/github/myrepo/myscript/myscript.py -h
它應該不必硬編碼到myutils模塊的完整路徑工作,而只是相對路徑...
我不認爲將'myutils'的絕對路徑添加到'sys.path'中是個不錯的主意,因爲它可能會污染'sys.path'。但是最好將'myrepo'的路徑添加到'sys.path'中 – flyer