我正在尝试将python代码从一个子模块导入到另一个子模块,但是却遇到错误,但是仅当我从包中导入的依赖项超过依赖性时。
据我了解,这种“圆形”导入可以在Python中完成。从我希望代码的组织方式来看,我确实需要这些“共同依赖”的导入,并且除非确实需要更改,否则我希望将代码的结构保持在当前所在的相同子模块中。 / p>
我的目录/文件结构:
./subm1/
./subm1_file.py
./subm2/
./subm2_file.py
./subm_main/
./subm_main_file.py
# subm1_file.py
# -------------
import subm_main.subm_main_file
print(subm_main.subm_main_file.test)
# subm2_file.py
# -------------
import subm_main.subm_main_file
print(subm_main.subm_main_file.test)
# subm_main_file.py
# -------------
import os
import sys
current_path = os.path.dirname(__file__)
sys.path.append(os.path.join(current_path+".."))
import subm1.subm1_file
import subm2.subm2_file
test = "test_variable"
我正在$ python subm_main_file.py
目录中运行subm_main
如果我仅使用一个模块,则此方法有效,因此如果在subm_main_file.py
中注释掉import subm1.subm1_file
,它将运行并打印测试变量,如果我注释掉import subm2.subm2_file
,则同样错误总是第二次导入。因此,在我显示的代码中,错误出在subm2_file.py
中。
错误:
AttributeError: module 'subm_main' has no attribute 'subm_main_file'
这对我来说似乎很奇怪,因为两次导入语句都未注释掉,但是这一次却无法工作。我该如何解决该错误(并希望将我的代码保持在当前状态)?
答案 0 :(得分:0)
我无法在帖子中发表评论,但是也许您的问题是,如果您想保持文件夹/代码结构不变,则需要在根目录和子目录中放置一个 init .py文件...