python - 2つの異なるアプリケーションでPythonプロジェクトを構築する

python windows linux pygtk

私はpython / GTKで訪問者のキオスクを書くつもりです。プロジェクトには、キオスクのフロントエンドとMySQL DBにリンクされた管理用のバックエンドの2つのアプリケーションがあります。

両方のアプリケーションに共通のコードを持たせたい。
私はこのようにプロジェクトを構成することを考えていました:

project.common-一般的なコード用

project.frontend-フロントエンド用。

project.backend-バックエンド用。

そう:

project/
    common
    frontend
    backend


私が持っているつもりの問題は、各アプリケーションが独自のdata_filesを持ち、アプリケーションを個別にパッケージ化することです。フロントエンドはLinux上で実行され、バックエンドはWindows(cx_freeze)とLinux上で実行されます。

誰かが私に何かアドバイスを与えることはできますか?
答え
common/projectに複数のディレクトリ(つまり、frontend/projectbackend/project、およびPYTHONPATHディレクトリ)を階層を重ねて(つまり、それぞれにproject最上位パッケージがある)持つことができますが、デフォルトではPythonは満足できません。これは、他の多くの言語(PHP、Javaなど)が行うように、最初に一致したディレクトリを使用し、それらのすべてを検索しないため、インポートエラーが発生します。

ただし、これを各project/ディレクトリの__init__.pyに配置することで、Pythonに探し続けるように効果的に指示し、このパッケージのコードを見つける場所はこれだけではありません。

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


多くのパイオニスタはあなたをそのようなばかげた異常のためにあなたを避けて嘲笑し、この努力の愚かさを宣言し、おそらくあなたの霊長類の祖先について不愉快な提案をするでしょう。 「名前空間パッケージはひどい考えです」と彼らは言うでしょう。あなたの決定を守る準備をしてください。また、これらの2行をソースツリーに追加して、それらの機能を説明するコメントを添付しないでください。

このページはこれらの概念のいくつかのよい説明があります:
説明:http://www.doughellmann.com/PyMOTW/pkgutil/

このアプローチに従えば、common + frontendで配布し、common + backendで別の配布を作成できます。
関連記事

python - Matplotlibでのカラーマップの範囲の設定

python - 動的に作成されたメニュー項目からラベル値を取得します[tkinter]

python - リアルタイムSocket.IOスケーリングの問題-Python

python - Pythonを介してcmdウィンドウからコンテンツを読み取る

python - データベースの選択と日時の並べ替え(リアルタイムPythonダッシュボード)

python - 日付を選択するためのTkinterメニュー

python - このクエリをsqlalchemyでどのように表現しますか?

python - ctypesの他の関数からポインターとして返された関数の呼び出し

jquery - DjangoクエリセットJSONの解析

python - 大きなファイル内の多数の小さなドキュメントのドキュメントインデックスを効率的に生成する