2011-09-27 25 views
2

我打算在python/GTK中編寫一個訪問者信息亭。該項目將有兩個應用程序,前臺的售貨亭和後臺的管理鏈接到MySQL數據庫。構造一個包含2個不同應用程序的python項目

我希望這兩個應用程序都有共同的代碼。 我想構建的項目,像這樣的:

project.common - 常用代碼

project.frontend - 針對前端。

project.backend - 用於後端。

所以:

project/ 
    common 
    frontend 
    backend 

,我要去到的問題是每個應用程序都會有自己的data_files和我將要單獨包裝的應用程序。前端將在Linux上運行,後端將在Windows(cx_freeze)和Linux上運行。

任何人都可以給我任何建議嗎?

+0

另請參閱此:http://stackoverflow.com/questions/7051577/alternative-implementations-of-python-setuptools-entry-points-extensions-in-oth/7160689#7160689 – Louis

回答

2

您可以在PYTHONPATH重疊的層次結構有多個目錄(即common/projectfrontend/projectbackend/project目錄)(即每個人都有project頂層包),但默認情況下Python會不會滿意這個,因爲它使用了第一個匹配它找到的目錄,並不像許多其他語言一樣搜索它們(PHP,Java等),因此您將收到導入錯誤。

但是通過把這個在每個project/目錄的__init__.py,就相當於告訴Python來繼續尋找並認爲這是無法找到的代碼爲這個包的唯一的地方:

import pkgutil 
__path__ = pkgutil.extend_path(__path__, __name__) 

許多Pythonistas必順和嘲笑你這種荒謬的異常,並宣佈這種努力的愚蠢,並可能對你的靈長類動物提出不愉快的建議。 「命名空間包是一個糟糕的主意」他們會說。準備捍衛你的決定。並且你不要將這兩行添加到你的源代碼樹中,而沒有附加註釋來解釋他們做了什麼!

本頁面有一些概念了很好的解釋: 說明:http://www.doughellmann.com/PyMOTW/pkgutil/

如果按照這種方法,你可以做一個分佈common + frontend,另一個common + backend

相關問題