2

作成しているアプリケーションにPythonを埋め込んでおり、Pythonコードを配布するための便利な方法を探しています。私は最近読んでzipimport、完全に拡張されたツリーを含めるのではなく、すべてのPythonコードを配布するのに便利な方法だと考えました。だから、私はこれと同じように私のパッケージを設定しました:

.
├── setup.py
└── testpack
    ├── __init__.py
    └── pack1
        ├── foo.py
        └── __init__.py

次のようになりsetup.pyます:

from distutils.core import setup

setup(
    name='testpack',
    author='FatalError',
    version='1.0',
    packages=['testpack.pack1']
)

それから私は走っpython setup.py bdist --format=zipた。しかし、zipの内容を見ると:

$ unzip -l testpack-1.0.linux-x86_64.zip 
Archive:  testpack-1.0.linux-x86_64.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
      183  2013-03-13 10:47   usr/local/lib/python2.7/dist-packages/testpack-1.0.egg-info
      152  2013-03-13 10:47   usr/local/lib/python2.7/dist-packages/testpack/pack1/__init__.pyc
      181  2013-03-13 10:47   usr/local/lib/python2.7/dist-packages/testpack/pack1/foo.pyc
        0  2013-03-13 10:41   usr/local/lib/python2.7/dist-packages/testpack/pack1/__init__.py
       33  2013-03-13 10:41   usr/local/lib/python2.7/dist-packages/testpack/pack1/foo.py
---------                     -------
      549                     5 files

明らかに、結果は(それほど驚くことではありませんが)での使用には適していませんzipimport/むしろ、これはパッケージをインストールするために解凍することを目的としたzipアーカイブです。

代わりにパッケージをビルドして動作するようにするdistutils(またはなど)方法はありますか?私が持っているコードは実際にはアプリケーション固有であるため、システムライブラリにインストールされていません。setuptoolszipimport

自分でスクリプトを作成できることはわかっていますが、それでは、それはどのような楽しみですか?たとえば、すべてがプリコンパイルされており、パッケージに配布用ではない単体テストパッケージが含まれていることを確認したいと思います。それで、私はこれらのツールの1つが私のためにそれをすることができることを望んでいました。

4

2 に答える 2

1

eggアーカイブはzipimport対応です(反対のフラグが立てられている場合を除きます。その場合、インストール中に解凍されます)。

を使用しpython setup.py bdist --formats=eggます。

于 2013-03-13T15:03:11.440 に答える
0

distutilsのbdist形式は、直接インポート可能なzipファイルを生成するようには設計されていませんが、手動またはpipなどのツールでダウンロードおよびインストールできるディストリビューションを生成します。Wheels(優先卵のフォーマット)を使用するか、distutilsを使用してpycファイルを作成し、build/mypackageディレクトリを手動で圧縮して出荷することができます。

于 2014-04-24T21:24:20.017 に答える