所以,這裏是我的(好吧..雜亂)導演:蟒蛇101 - 訪問從父文件夾的模塊最好的辦法
.
├── app
│ ├── __init__.py
│ ├── analyze_text.py
│ ├── images.py
│ ├── main.py
│ ├── messages.py
│ ├── process_text.py
│ ├── requirements.txt
│ ├── response.py
│ └── tests
│ ├── __init__.py
│ ├── analyze_text_test.py
│ ├── test_process_text.py
│ └── unit_tests.py
└── setup.py # no idea what's going on with this
所有我想要做的是,只需使用
from analyze_text import AnalyzeText
在analyze_text_test.py文件,沒有看到
「你是個白癡,你不知道你在做什麼」,在終端..又名:
ImportError: No module named (whatever)
我發現這個解決方案:
https://stackoverflow.com/a/11158224/2738183
import os,sys,inspect
currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
parentdir = os.path.dirname(currentdir)
sys.path.insert(0,parentdir)
import mymodule
其中一期工程,但它是Janky。
爲什麼?
因爲...
我正在使用它在Janky的方式。我不想將這些代碼重新粘貼到測試文件夾中的每個單元測試中(這些文件位於不同的文件中)。
(那麼如果我只是在初始狀態下初始化 .py ?你得到的是一個錯誤,但我做了隨機試驗,只是爲了看看發生了什麼)
那麼,解決這個問題最優雅的方法是什麼? (不repasting代碼(或只是一個函數堅持到底,把它多次))
編輯: 的意見至今都沒有解決任何事情,所以我會盡力使這一點更加明確。我找到了一個可行的解決方案。因此,在測試目錄中的每個文件中,我必須重新粘貼該解決方案(或者多次調用相同的函數,因爲有文件)。這正是我想要避免的。我想要一個可以應用於test目錄中每個文件的解決方案,這樣我就可以像普通文件一樣使用父目錄中的導入,而不是在每個文件中追加父路徑。
從'..analyze_text導入AnalyzeText'工作嗎? –
我將編輯以包含該信息。我想我已經說過了。 –
如果將'sys.path.insert'行放入__init__.py中,會出現什麼錯誤?應該工作據我所知 –