代码之家  ›  专栏  ›  技术社区  ›  Panda Coder

使模块在全球范围内可用

  •  2
  • Panda Coder  · 技术社区  · 6 年前

    我正在努力使我的模块在全球范围内可用

    文件系统结构

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

    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()
    

    模块_static.py

    def test():
        print('  -> This is module_static')
    

    def test():
        print('  -> This is module_dynamic')
        module_static.test()
    

    跑步 创建以下执行流 main.py->模块_dynamic.py->模块_static.py

    enter image description here

    如你所见:

    • 模块的加载工作正常
    • 然而,尽管试图 module_static 可在全球范围内使用,但无法正常工作 模块_dynamic.py 说错话 静态模块

    我该怎么做 module_static.py 可在 module_dynamic.py 模块_dynamic.py )?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Max    6 年前

    不是说这是个好习惯,但你可以做到

    main.py

    import builtins
    import module_static
    builtins.module_static = module_static
    

    module_static

    更多关于 builtins How to make a cross-module variable?

        2
  •  1
  •   Sylvan LE DEUNFF    6 年前

    它不能按你期望的方式工作。globals()返回脚本中全局变量的dict。也许这能帮助你理解

    enter image description here

    https://www.python-course.eu/python3_global_vs_local_variables.php

    无论如何 .

    如果它只是供您个人使用的本地工具,您可以将其移动到文件夹中 {Python_installation_folder}/Lib .

    import module_static
    

    并使用您的模块。

    https://anweshadas.in/how-to-upload-a-package-in-pypi-using-twine/