我的设置是这样的。
我有一个engine.py
,它定义了许多我在外部script.customextension
中编写和修改的变量和自定义函数。我正在使用imp.load_source('script', 'script.customextension')
导入我的外部脚本,但是当我这样做时,无法从外部模块访问所有变量和函数。
然后我尝试将其写为外部脚本中的第一行:from engine import *
然后我重新实例化所有对象并丢失已创建的我需要访问的对象。
总体简化如下
档案engine.py
a = 10
def f(myval):
global a
a = myval
print(a)
if __name__ == '__main__':
imp.load_source('script', 'script.ext')
和文件
script.ext
有这一行
f(20)
运行engine.py时的结果:
NameError: name 'f' is not defined
我想要的是:
20
答案 0 :(得分:0)
这是丑陋的:
import __main__ as main
main.f(20)
答案 1 :(得分:0)
我发现可以使用此解决方案而不是导入模块(请参阅exec
)
_file = open('script.ext')
for line in _file:
exec(line)