Python 如何在运行时导入文件?

Python 如何在运行时导入文件?,python,import,Python,Import,我有以下问题: file1.py具有我需要用于file2.py的函数和变量。 使用文件1中的导入myclass1不会有任何问题。 问题是,我还想在运行file2.py时将变量从file2.py发送到file1.py 从文件1导入file2.py中的myclass1不起作用,因为当我编译file2.py时,它显示一个导入错误: pydev debugger: starting Traceback (most recent call last): File "****\file1.py",

我有以下问题:

file1.py
具有我需要用于
file2.py
的函数和变量。 使用文件1中的
导入myclass1
不会有任何问题。 问题是,我还想在运行
file2.py
时将变量从
file2.py
发送到
file1.py

从文件1导入
file2.py中的myclass1
不起作用,因为当我编译
file2.py
时,它显示一个导入错误:

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
pydev调试器:正在启动
回溯(最近一次呼叫最后一次):
文件“***\file1.py”,第13行,在
从文件1导入myclass1
文件“***\forfile1.py”,第7行,在
从文件2导入myclass2
文件“***\file1.py”,第13行,在
从文件1导入myclass1
ImportError:无法导入名称s4dat_类
那么,如何在运行时导入文件?或者有没有其他方法可以满足我的需求?Thx

如果问题是“当module2从module1导入时,我如何从module1导入到module2”,简单的答案是“你不能”,解决方案是

  • 合并两个模块
  • 或者将公共依赖项提取到第三个模块中
  • 或者将所需对象(提示:类和函数也是对象)作为函数或方法参数传递(依赖项注入的最简单形式)

完整的答案是,有一些变通方法(比如从函数体中导入),但在99.8%的时间(大约)里,这是一种确定的设计气味-你不应该有循环依赖关系,这样比求助于变通方法更好地解决设计问题。

在文件_2.py中,你可以键入:

my_module = __import__("file_1")  # assuming file_1.py in the python path.
然后,您可以按原样使用
myu模块
file\u 1


但是,为了实现您想要的,我建议您将
file_1.py
file2_py
常见的所有内容放在一个单独的文件
file_3.py
中。然后您可以同时导入
文件\u 3.py

您所说的“发送”变量是什么意思?如果有两个模块相互导入,这通常是一个坏迹象。请解释一下你的模块在做什么,它们需要互相访问。我想你的意思是在两个执行的脚本之间共享一个变量?首先,我只有一个小程序(file2.py)。然后我制作了一个包含更多函数的程序(file1.py)。其中一个函数是处理第一个小程序的输出。问题是file2.py的输入来自file1.py