我正在尝试使我的模块在全球范围内可用
文件系统结构
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
中编写任何其他代码)?
答案 0 :(得分:2)
并不是说这是一种好习惯,但是您可以做到
main.py
import builtins
import module_static
builtins.module_static = module_static
这应该使您可以在任何地方使用module_static
。
有关builtins
的更多信息:How to make a cross-module variable?
答案 1 :(得分:1)
它无法按您期望的方式工作。 globals()返回脚本中全局变量的字典。也许这可以帮助您了解
您可以看一下本课程以更好地了解
https://www.python-course.eu/python3_global_vs_local_variables.php
无论如何,您将必须导入模块才能使用它。
如果这只是供您个人使用的本地工具,则可以将其移动到文件夹中
{Python_installation_folder}/Lib
。
然后,在任何脚本中,您都可以做到
import module_static
并使用您的模块。
如果您想与其他人共享模块,请在PyPi上发布(上传)它。您可以按照下面的教程 https://anweshadas.in/how-to-upload-a-package-in-pypi-using-twine/