2014-02-11 45 views
0

我有以下问题:如何在运行时导入文件?

file1.py有我需要的功能和变量​​。 与from file1 import myclass1这是没有问题的。 问题是,我也想从​​“发送”变量file1.py在运行​​

from file1 import myclass1在​​不工作,因为当我编译​​它apears一个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

+2

你是什么意思的“发送”变量?如果您有两个导入对方的模块,通常是一个不好的迹象。请解释你的模块正在做什么,需要他们互相访问。 – BrenBarn

+0

我想你的意思是在两个执行的脚本之间共享一个变量? – ImadOS

+0

首先我只有一个小程序(file2.py)。然后我制作了一个具有更多功能的程序(file1.py)。其中一个功能是与第一个小程序的输出一起工作。问题是file2.py的输入来自file1.py – Hubschr

回答

1

如果问题是“如何从模块1导入模块2时,从模块1模块2进口”,简单的答案是“你不能”,解决的办法是要么

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

完整的答案是,有解决方法(比如从一个函数体内导入),但是这是fugly和时间(大约)一个肯定的设计的味道99.8% - 你应该没有循环依赖等等更好地治愈设计,而不是采用富有变通的解决方法。

1
在file_2.py

可以键入:

my_module = __import__("file_1") # assuming file_1.py in the python path. 

那么你可以使用my_module,因为它是file_1

但为了才达到你想要我建议你把所有这些都是共同的东西是什么以file_1.pyfile2_py为例分隔文件file_3.py。那么你可以在两个地方导入file_3.py

相关问题