python - 使模块在全局范围内可用

标签 python module global-variables global

我正在努力让我的模块在全局范围内可用

文件系统结构

main.py
module_static.py
folder/module_dynamic.py # this is example, but imagine 100s of modules

ma​​in.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()

运行ma​​in.py创建以下执行流程ma​​in.py -> module_dynamic.py -> module_static.py

enter image description here

如您所见:

  • 模块加载正常
  • 但是,尽管试图制作 module_static全局可用,但它不起作用 module_dynamic.py 抛出错误,提示 module_static不存在

我怎样才能制作module_static.py可用于module_dynamic.py (理想情况下无需在 module_dynamic.py 中编写任何额外代码)?

最佳答案

并不是说这是一个好的做法,但你可以这样做

ma​​in.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/

相关文章:

python - 如何在 Python 中使用 flickrapi 解析 Flickr

python - 如何修复 TensorFlow 对象检测示例中 version.py 导致的错误

ruby-on-rails - rails : dynamically define class method based on parent class name within module/concern

module - PyQt 5.11 缺少 WebEngine 模块

web - 在 Go Web 应用程序中使用全局变量来存储数据库句柄是个好主意吗?

C++ - 在另一个头文件中包含一个头文件以使全局变量可用于数组声明

Javascript:列出同一范围内的所有变量(iframe)

python - Robot Framework 中的 SSHLibrary 在 Mac 上因超时参数而失败

python - 如何从python中的递归函数返回值?

javascript - 使用 ES6 模块时如何将函数分配给窗口对象?