импортирование элементов модуля в другое без квалифицированного имени

Моя проблема довольно проста, но я не могу найти хороший ответ, потому что поисковые системы неоднозначны по термину «модуль». Я хочу сделать это примерно так:

Модуль: a.py

x = 2 

Модуль: b.py

 import a 

Теперь я хочу иметь доступ к x из b без использования квалифицированного имени (т.е. без ввода ax , только с x ). В моей ситуации я не могу использовать:

 from a import x 

потому что я не знаю, какие элементы будут содержать. Я не могу использовать

 from a import * 

ни. Есть ли простой способ слияния или присоединения модулей (я имею в виду объектные модули)?

One Solution collect form web for “импортирование элементов модуля в другое без квалифицированного имени”

Это не очень хорошая идея, но вы можете использовать:

 globals().update(vars(a)) 

чтобы добавить все имена, определенные в модуле, в локальное пространство имен. Это почти то же самое, что и from a import * . Чтобы точно эмулировать from a import * без использования самого from a import * , вам нужно будет использовать:

 globals().update(p for p in vars(a).items() if p[0] in getattr(a, '__all__', dir(a))) 

Обычно вы просто используете x = ax или from a import x .

Если вы используете zipimport вам не нужно ничего делать. Просто добавьте путь к архиву в sys.path :

 import sys sys.path.insert(0, '/path/to/archive.zip') from test import x 
  • Изменение переменной в импортированном модуле из ... import *
  • Что делает из __future__ import absolute_import на самом деле?
  • Путаница о глобальных переменных в python
  • Правильный импорт модулей в Python
  • Невозможно импортировать коллекции из-за отсутствия <collection.py>
  • Импорт из Python из одной папки, но не другой
  • Импорт Python очень медленный - Anaconda python 2.7
  • Импорт Python с __init__.py
  • Python - лучший язык программирования в мире.