使模块在全球范围内可用
Make modules available globally
我正在尝试让我的模块在全球范围内可用
文件系统结构
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
中编写任何额外代码)?
它无法按您期望的方式工作。 globals() return 脚本中全局变量的字典。也许这可以帮助你理解
你可以看一下这个课程,以便更好地理解
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/
并不是说这是好的做法,但你可以做到
main.py
import builtins
import module_static
builtins.module_static = module_static
这应该允许您从任何地方使用 module_static
。
有关 builtins
的更多信息:How to make a cross-module variable?
我正在尝试让我的模块在全球范围内可用
文件系统结构
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
中编写任何额外代码)?
它无法按您期望的方式工作。 globals() return 脚本中全局变量的字典。也许这可以帮助你理解
你可以看一下这个课程,以便更好地理解
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/
并不是说这是好的做法,但你可以做到
main.py
import builtins
import module_static
builtins.module_static = module_static
这应该允许您从任何地方使用 module_static
。
有关 builtins
的更多信息:How to make a cross-module variable?