我在用我的項目內的內部進口困難共享的模塊。這是我的項目的部分樹結構:訪問來自子包
app
|- Gui.py
|- Main.py
|- logger.py
|- config.py
|- WebParser (package)
|- __init__.py
|- LinksGrabber.py
|- LyricsGrabber.py
|- ImagesGrabber.py
|- (Many other packages...)
的logger.py
和config.py
模塊均要求在每個包的模塊,並且是獨立的(僅使用儲存卡式模塊)。從包內部訪問這些模塊是非常棘手的。
這是我怎樣努力去實現它,用於啓用配置訪問和WebParser\LinksGrabber.py
日誌記錄功能:
# WebParser\__init__.py:
sys.path.append('..') # for outside-package modules
import config
from logger import log
# WebParser\LinksGrabber.py:
import WebParser
config = WebParser.config
log = WebParser.log
的問題:
- 這有碼味。我敢打賭有一個更好的方法來實現這種行爲。
- 我想打電話給
import WebParser
和使用WebParser.LinksGrabber
和WebParser.LyricsGrabber
向右走,毫不隱晦地導入它們。這可與進口內__init__.py
模塊來完成,但是因爲每個包的模塊導入包本身是不可能的,它會發出遞歸進口。
您能否提供一個更好的FPGA實現,或不同的代碼設計?
當你說「每個模塊自己導入包」時,你的意思是哪些模塊?你的意思是外部目錄(config,Gui等)中的所有模塊導入WebParser,而且WebParser內部的所有模塊都導入這些外部模塊?或者你只是表示WebParser內的模塊導入WebParser本身? – BrenBarn 2012-07-16 18:23:14
我的意思是WebParser內的每個模塊都會導入WebParser本身。 – iTayb 2012-07-16 18:25:40