パッケージの設定
@ThomasK が言ったように、これを行う最も簡単な方法はパッケージを使用することです。パッケージに という名前を付けた場合peewee、最上位__init__.pyファイルを編集して、ユーザーが以前と同じ方法でパッケージを引き続き使用できるようにすることができます。
まず、パッケージとサブフォルダーのディレクトリ構造:
peewee/
__init__.py
peewee.py
extras/
__init__.py
foo.py
bar.py
__init__.pyファイル_
次に、トップレベルに数行追加する必要があります__init__.py。
簡単な方法を使用して、次のものを含めることができます。
from peewee.peewee import *
これにより、すべてがpeewee.pyパッケージの最上位の名前空間に配置されます。または、より伝統的な代替手段を使用して、最上位にある必要があるメソッドのみを明示的にインポートすることもできます。
from peewee.peewee import funtion1, class1,...
また、下位互換性のために__all__、モジュールの属性を明示的に設定して peewee のみを含めることができます
__all__ = ['peewee']
from peewee import *これにより、本当に必要な場合に引き続き使用できるようになります。
setup.pyファイルの書き込み
最後に、いくつかのインストール スクリプトなども設定する必要があります。Zed Shaw のLearn Python The Hard Way 演習 46には、使用すべき単純で明確なプロジェクト スケルトンがあります。
最も重要な部分はsetup.pyファイルです。例のページはそれほど長くなく、Zed は本当に素晴らしい本を作るために多大な労力を費やしたので、ここに再投稿するつもりはありません (ただし、本全体は無料で入手できます)。distutils の setup.py ファイルを作成するためのより長い手順/ドキュメントを読むこともできますが、LPTHW は、必要なすべてをすばやく簡単に実行できるものを提供します。
パッケージ全体のディレクトリ構造
最終的なディレクトリ構造は実際には少し大きくなることに注意してください (名前はpeewee-pkg重要ではなく、binオプションです。サブフォルダーの名前は重要です)。
peewee-pkg/
setup.py
bin
peewee/
__init__.py
peewee.py
extras/
__init__.py
foo.py
bar.py
インストールと使用
その後、必要に応じて実際にパッケージを PyPi に投稿したり、ユーザーに直接配布したりできます。実行する必要があるのは、次のとおりです。
python setup.py install
そして、すべてが利用可能になります。
インストール後のインポート
最後に、前述のようにファイルで特定のインポートを行う場合peewee/__init__.py、ユーザーは引き続き次のことを実行できます。
from peewee import function1, class1, ...
しかし今ではimport peewee.extras、エクストラ関数 (またはimport peewee.extras.foo as fooまたはfrom pewee.extras.foo import extra_awesome) などにアクセスするために使用することもできます。また、質問で尋ねたように、次のこともできるようになります。
from pewee.extras import foo
そしてfoo、ファイルが現在のディレクトリにあるかのように の関数にアクセスします。
パッケージ開発時の注意事項
コンピューターで、次を実行する必要があります。
python setup.py develop
を使用するのと同じように、パッケージをパスにインストールしますpython setup.py install。ただし、developモジュールを使用するたびにファイルを再チェックするように python に指示します。これにより、変更を加えるたびに、テストのためにシステムですぐに利用できるようになります。