我在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 *
...
的問題是,要
from _Framework.DB.__init__ import xy
everdy通話將覆蓋我的 「全局」 變量
我該如何解決?
感謝
編輯:
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並重新執行其代碼,以便覆蓋「environment」。我正在尋找一種乾淨的方式來共享相同包裝模塊之間的變量
我真的不明白你問題的問題。你可以發佈__init__.py代碼和來自模塊的更多代碼,其中導入「覆蓋你的'全局'變量',說明究竟是什麼被覆蓋以及由誰? – Bogdan 2012-01-31 12:32:47
######################## __init__.py __all__ = ['Events','Channels','Genres','Subgenres',' EPGSections'] 嘗試: 康恩= MySQLdb.connect(主機,用戶,passwd中,分貝) 光標= conn.cursor(MySQLdb.cursors.DictCursor) 除外: 光標=無 環境= '活' 在my_script.py中我導入了數據包包,並設置了「環境」變量,但是當導入Channels模塊時,我認爲它會對__init__.py進行新的調用並重新執行其代碼,以便「環境」被覆蓋。 我正在尋找一個乾淨的方式來共享相同包的模塊之間的變量 – 2012-01-31 13:49:13
你知道你可以編輯這個問題嗎? – 2012-01-31 14:40:02