我正在努力让我的模块在全局范围内可用
文件系统结构
main.py
module_static.py
folder/module_dynamic.py # this is example, but imagine 100s of modules
main.py
print('Loading module_static')
import module_static
module_static.test()
# Trying to make module_static available globally
globals()['module_static'] = module_static
__all__ = ['module_static']
print('Loading module_dynamic')
import sys
sys.path.append('./folder/')
import module_dynamic
module_dynamic.test()
module_static.py
def test():
print(' -> This is module_static')
module_dynamic.py
def test():
print(' -> This is module_dynamic')
module_static.test()
运行main.py创建以下执行流程main.py -> module_dynamic.py -> module_static.py
如您所见:
- 模块加载正常
- 但是,尽管试图制作
module_static
全局可用,但它不起作用 module_dynamic.py 抛出错误,提示module_static
不存在
我怎样才能制作module_static.py
可用于module_dynamic.py
(理想情况下无需在 module_dynamic.py
中编写任何额外代码)?
最佳答案
并不是说这是一个好的做法,但你可以这样做
main.py
import builtins
import module_static
builtins.module_static = module_static
这应该允许您从任何地方使用module_static
。
有关内置函数
的更多信息:How to make a cross-module variable?
关于python - 使模块在全局范围内可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53833882/