python - 如何让导入的模块使用与主模块相同的对象?

标签 python import namespaces

我的设置是这样的。
我有一个 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/

相关文章:

c# - C# 有什么可以与 Python 的列表推导相媲美的吗?

python - Scrapy 输出 [ 到我的 .json 文件中

c - 如何使用 GO 导入用 C 编写的 DLL 函数?

javascript - Facebook SDK 从 jQuery 接管 "$"- 如何阻止它?

c# - 不同命名空间中的类

python - 如何使用 Python 的 RotatingFileHandler

python - 名称错误 : global name 'HTTPError' is not defined

json - 将导入的 json 数据导入数据框

python - IPython sys.path 不同于 python sys.path

namespaces - 禁用删除命名空间 - Kubernetes