Сделать модули доступными по всему миру - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь сделать мои модули доступными глобально

Структура файловой системы

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

enter image description here

Итак, как вы можете видеть:

  • Загрузка модулей работает правильно
  • Однако, несмотря на попытку сделать module_static доступным глобально, он не работает module_dynamic.py бросковошибка о том, что module_static не существует

Как сделать module_static.py доступным в module_dynamic.py (в идеале, без необходимости писать дополнительный код в module_dynamic.py)?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Не говорю, что это хорошая практика, но вы можете сделать

main.py

import builtins
import module_static
builtins.module_static = module_static

Это должно позволить вам использовать module_static из любого места.

Подробнее о builtins: Как создать переменную кросс-модуля?

0 голосов
/ 18 декабря 2018

Это не может работать так, как вы ожидаете.globals () возвращает переменные globals в вашем скрипте.Может быть, это поможет вам понять

enter image description here

Вы можете взглянуть на этот курс для лучшего понимания

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/

...