导入模块在另一个模块中定义

时间:2016-06-10 19:44:18

标签: python python-2.7 import

我有以下设置。第一个文件(config.py)定义了一个路径,告诉file1.py要导入哪个模块。

#file:config.py
moduleToBeImported="/here/is/some/path/file2.py"
import file1

然后在file1.py中,我导入config.py

中定义的模块
#file:file1.py
import imp
foo = imp.load_source('module.name',moduleToBeImported)

是否可以将变量moduleToBeImported从config.py传递给file1.py?

在当前的设置中,我得到了预期的错误:NameError:name' moduleToBeImported'未定义

1 个答案:

答案 0 :(得分:1)

简答 -

长答案 - 也许,你可以。并且,您不应该。循环导入将导致导入循环。这很糟糕。

例如,假设您在config.py中导入了file1.py。只要您运行file1.py并调用config.pyconfig.py中的代码就会像任何其他python文件一样运行。此时,您最终会尝试从file1.py导入file1.py

Python可能会或可能不会在它破坏您的系统之前检测到这个循环。

一般来说,循环导入是一种非常糟糕的编码习惯。

您可以做什么 - 您的config.py应该包含最小的可运行代码。而是保留所有配置变量和设置以及常规实用程序方法。简而言之,如果file1.py包含关键代码,则不应将其导入config.py。您可以在config.py中导入file1.py

更多阅读:Python circular importing?