我有一個小問題,導入一個腳本,在父文件夾,但我設法解決它使用:使用蟒蛇與複式父相對進口和孩子夾
import sys
sys.path.append("../")
我的目錄是這樣的:
Data
|->->code
|->->script1.py
|->->->->subfolder
|->->->script2.py
當我從子文件夾目錄運行script2(它導入script1)時,腳本運行時沒有問題。但是,如果我嘗試使用運行從代碼目錄SCRIPT2:
:~ ./subfolder/script2.py
我得到一個錯誤:
ImportError: No module named script1
我試圖用相對進口,而是因爲我的代碼是不是在包裝結構它不工作。有沒有一種方法可以從兩個目錄(父目錄和子目錄)運行script2,並且每次都能夠導入script1?
謝謝你在前進, 格奧爾基尼科洛夫
編輯:好吧,以後我經歷了所有的建議讀,我做了一個「簡單」的黑客這在我看來是相當難看,但工作得很好:
import sys
parent_folder = sys.path[0].split("/subfolder")[0]
sys.path.append(parent_folder)
import script1
現在,我甚至可以從根調用SCRIPT2與它要管理導入SCRIPT1
python版本? 2.7和3.x具有不同的導入默認行爲(這使我很困惑)。但一般來說,如果你想重新使用代碼,最好把它做成一個包。它減輕了你的生活,而其他人則希望參考你的工作。 – HuStmpHrrr
@HuStmpHrrr我使用2.7,我無法打包代碼,因爲它意味着從頭開始,這是不可行的。有沒有辦法做到這一點,而不必切換到包? –
你只需要處理'pwd'或'cwd'問題。你只需將'../'追加到文件的路徑。 – HuStmpHrrr