Я создал пакет в python. В файле init я поместил переменную, которая должна быть доступна во всех модулях этого пакета.Структура пакета python и глобальные переменные
Пример:
# main script
from _Framework.STB import DB
DB.environment = 'lab'
channel = DB.Channels.ChannelStatic.getChannelByNumber(416)
...
# Channels.py module in the package
from _Framework.DB.__init__ import cursor
from _Framework.DB.__init__ import environment
from time import *
...
Проблема заключается в том, что everdy вызов
from _Framework.DB.__init__ import xy
переписывает мои "глобальные" переменные
Как я могу решить?
Благодаря
EDIT:
init.py:
all = [ 'Events', 'Channels', 'Genres', 'Subgenres','EPGSections']
try:
conn = MySQLdb.connect(host,user,passwd,db)
cursor = conn.cursor(MySQLdb.cursors.DictCursor)
except:
cursor = None
environment = 'live'
импортировать пакет DB, и я установить "среда" переменной, но когда модуль каналы импортируется, я думаю, , он выполняет новый вызов init.py и выполняет повторный запуск своего кода, поэтому «среда» перезаписывается. Я ищу чистый способ обмена переменной между модулями одного и того же пакета.
Я не совсем понимаю проблему с вами. Можете ли вы опубликовать код __init__.py и еще один код из модуля, в котором импорт «перезаписывает ваши« глобальные »переменные», указывая, что именно перезаписано и кем? – Bogdan
######################### __init__.py __all__ = ['События', 'Каналы', 'Жанры', 'Поджанры', ' EPGSections'] попробовать: соппы = MySQLdb.connect (хост, пользователь, ПАРОЛЬ, дБ) курсора = conn.cursor (MySQLdb.cursors.DictCursor) кроме: курсора = None среды = 'живого' В my_script.py Я импортирую пакет DB, и я установил переменную «среда», но когда импортируется модуль Channels, я думаю, что он вызывает новый вызов __init__.py и повторно выполняет его код, поэтому «среда» перезаписывается , Я ищу чистый способ обмена переменной между модулями одного и того же пакета –
Вы знаете, что можете правильно отредактировать вопрос? –