多个依赖项/循环python导入失败

时间:2019-10-10 19:12:16

标签: python python-import

我正在尝试将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' 

这对我来说似乎很奇怪,因为两次导入语句都未注释掉,但是这一次却无法工作。我该如何解决该错误(并希望将我的代码保持在当前状态)?

1 个答案:

答案 0 :(得分:0)

我无法在帖子中发表评论,但是也许您的问题是,如果您想保持文件夹/代码结构不变,则需要在根目录和子目录中放置一个 init .py文件...