我有以下问题:
file1.py
包含file2.py
所需的函数和变量。
使用from file1 import myclass1
时没有问题。
问题是,我还希望在运行file2.py
file1.py
“发送”到file2.py
from file1 import myclass1
中的 file2.py
不起作用,因为当我编译file2.py
时,它会导致一个ImportError:
pydev debugger: starting
Traceback (most recent call last):
File "****\file1.py", line 13, in <module>
from file1 import myclass1
File "****\forfile1.py", line 7, in <module>
from file2 import myclass2
File "****\file1.py", line 13, in <module>
from file1 import myclass1
ImportError: cannot import name s4dat_class
那么,如何在运行时导入文件?或者有其他方法可以做我想要的吗? THX
答案 0 :(得分:1)
如果问题是“当module2从module1导入时如何从module1导入module2”,简单的答案是“你不能”,解决方案是
完整的答案是有一些解决方法(比如从函数体内导入),但这很麻烦,99.8%的时间(大约)是一个确定的设计气味 - 你应该没有循环依赖性这样可以更好地治愈设计,而不是采用非常简单的解决方法。
答案 1 :(得分:1)
在file_2.py中,您可以输入:
my_module = __import__("file_1") # assuming file_1.py in the python path.
然后您可以使用my_module
,因为它是file_1
但是为了实现您想要的内容,我建议您将file_1.py
和file2_py
中常见的所有内容放在一个单独的文件file_3.py
中。然后,您可以在两者中导入file_3.py
。