TL; DR導入,Python的2.7
對於固定的和不可改變的非封裝的目錄結構是這樣的:
some_dir/
mod.py
test/
test_mod.py
example_data.txt
什麼是一個非-package方式使test_mod.py
從mod.py
導入?
我被限制在這種情況下使用Python 2.7。
我想爲mod.py
中的函數寫一些測試。我想創建一個新目錄test
,它與mod.py
並排,並且裏面有一個測試文件test/test_mod.py
,它應該從mod.py
導入功能並測試它們。
由於相對導入的衆所周知的侷限性,它依賴於基於包的命名,所以不能以直接的方式完成此操作。然而,關於該主題的所有建議都建議將該腳本構建爲一個包,然後使用相對導入,這對我的用例來說是不可能的。
在我的情況下,mod.py
不可以作爲一個包來構建,我不能要求mod.py
的用戶來安裝它。他們可以自由地僅僅從版本控制中檢查文件,然後開始使用它,但是他們希望,並且我無法改變這種情況。
鑑於此,有什麼方法可以提供簡單,直接的test
目錄?
注:不只是坐在旁邊mod.py
測試文件,但實際測試的目錄,因爲會有其他資產一樣,隨之而來的測試數據,和子目錄組織是至關重要的。
我很抱歉如果這是重複的,但是在發佈之前我在研究中看到的這個問題的十幾個排列中,我還沒有看到一個解決如何執行此操作的問題。他們都說要使用包裝,這對我的情況來說不是一個允許的選擇。
也許不是最優雅的解決方案,但您可以爲您的測試跑步者修改'PYTHONPATH'。 。 。 – mgilson