嘿,我的工作,因爲它有一組層級模塊,建立像這樣的文件夾結構的項目:進口複雜的文件夾層次
module_name/
__init__.py
constants.py
utils.py
class_that_all_submodules_need_access_to.py
sub_module_a/
__init__.py
sub_module_a_class_a.py
sub_module_a_class_b.py
useful_for_sub_module_a/
__init__.py
useful_class_a.py
useful_class_b.py
sub_module_b/
__init__.py
sub_module_b_class_a.py
sub_module_b_class_b.py
等等等等......
問題是,我無法弄清楚如何在init .py中設置導入,以便我可以從sub_module_a/useful_for_sub_module_a/useful_class_a.py訪問class_that_all_submodules_need_access_to.py。
我試過在谷歌/ StackOverflow上查找這個用盡,我已經提出了。特別的是,PyCharm的路徑設置方式使我在PyCharm中的項目中工作時沒有遇到這個錯誤,但只能從其他環境中處理。
所以這裏是我提出的一個特別不雅的解決方案。我sub_module_a/useful_for_sub_module_a/初始化的.py的樣子:
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', '..')))
import module_name
這是sub_module類似_ * /,而不是在那裏的3」 ..的這短短兩年(即'.. '' .. '而不是'..','..','..'爲上面的sys.path.insert行)。然後在sub_module_a/useful_for_sub_module_a/useful_class_a.py,我不得不進口MODULE_NAME/constants.py(和其他人)是這樣的:
import module_name.constants
from module_name.class_that_all_submodules_need_access_to import ImportantClass
雖然這種解決方案的工作,我想知道是否有更好的/更優雅的方式來設置導入和/或文件夾層次結構?我很擔心與此模塊的用戶的python系統路徑有關。這甚至是一個有效的關注嗎?
也只是複製到網站包文件夾是一個解決方案:) –