6

目標:

  • 最新の Python パッケージ ツールセットを利用して、独自のパッケージをいくつかの virtualenv にデプロイ/インストールします。
  • インストールされたパッケージには、コンパイル済みの *.pyc (または *.pyo) のみが含まれ、ソース ファイルは含まれません。
  • いくつかのパッケージがあり、ベンダー名 (ここではスタジオ用にdgmxを選択) がパッケージ名として使用されます。したがって、インストールされるパッケージはdgmx/alucarddgmx/bansheedgmx/carmillaなどになります。
  • インストールされたパッケージのファイル階層は、python setup.py install --single-version-externally-managedまたはによるものと同じである必要がありますpip install*python setup.py install* を手動で *pip install* すると正確な結果が得られないのはなぜですか? を参照してください。

要するに質問:

私は、コンパイルされた *.pyc(または *.pyo) ファイルのみによって、独自の名前空間パッケージを virtualenv にデプロイするのが好きです。このファイル/ディレクトリ階層は、多くのooxx.eggパスによって汚染されたsys.pathで名前空間を反映するだけです。

私が試したこと:

  1. python setup.py bdist_egg --exclude-source-filesそれからeasy_install ooxx.egg
    • 各名前空間パッケージの「sys.path」を汚染します。
  2. python setup.py install --single-version-externally-managed.
    • *.pyc のみではありません。
    • 「install_requires」は無視されました!
    • アンインストールを正しく行うには、 ooxx.egg-info/installed-files.txtを手動で配置する必要があります。
  3. pip install .「setup.py」の場所にあります。
    • *.pyc のみではありません。
  4. pysetup install .「setup.py」の場所にあります。
    • *.pyc のみではありません。

更新

私の現在の考えは、方法2に従うことです。

  • python setup.py egg_info --egg-base .# requires.txt を取得
  • python setup.py install --single-version-externally-managed --record installed-files.txt# installed-files.txt を取得
  • 「requires.txt」を介して他の依存関係を手動でインストールします
  • 「installed-files.txt」を使用して、インストールされたソース ファイル (*.py) を手動で削除します。
  • 「installed-files.txt」からソース ファイル (*.py) を削除し、展開された「ooxx.egg-info/installed-files.txt」に配置します。

参考文献:

  1. setuptools から pip+virtualenv への移行
  2. setuptools を使用して .pyc (コンパイル済みの python) のみをインストールする
  3. Python .pyc ファイルを Google App Engine にのみデプロイできますか?
  4. 手動で *python setup.py install* を実行しても *pip install* の正確な結果が得られないのはなぜですか?
4

1 に答える 1

-1

いくつかのトリックが役立つ場合があります。

ソースを にコンパイル.pycし、1 つの.zipファイルに圧縮します。

.zipに を追加するだけで、簡単なモジュールで新しいモジュールを作成できますsys.path

したがって、このモジュールをインポートする.zipと、 がパスに含まれます。必要な作業は、 のカスタム ステップでsetup.py、zip ファイルを適切な場所にコピーするだけです。

于 2012-04-17T10:17:18.103 に答える