我有以下设置。第一个文件(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'未定义
答案 0 :(得分:1)
简答 - 否
长答案 - 也许,你可以。并且否,您不应该。循环导入将导致导入循环。这很糟糕。
例如,假设您在config.py
中导入了file1.py
。只要您运行file1.py
并调用config.py
,config.py
中的代码就会像任何其他python文件一样运行。此时,您最终会尝试从file1.py
导入file1.py
。
Python可能会或可能不会在它破坏您的系统之前检测到这个循环。
一般来说,循环导入是一种非常糟糕的编码习惯。
您可以做什么 - 您的config.py
应该包含最小的可运行代码。而是保留所有配置变量和设置以及常规实用程序方法。简而言之,如果file1.py
包含关键代码,则不应将其导入config.py
。您可以在config.py
中导入file1.py
。