我的设置是这样的。
我有一个 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
最佳答案
这是丑陋的:
import __main__ as main
main.f(20)
关于python - 如何让导入的模块使用与主模块相同的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23749108/