web-dev-qa-db-ja.com

作成方法Python Eggファイル

PythonのEggファイルについて質問があります。

Pythonパッケージごとに整理されたコードがあり、Eggファイルを作成しようとしています。 instructions に従っていますが、非常に一般的です。

それによると、setup.pyファイルが必要なようです。

  1. Setup.pyファイルに何を入れる必要があるのか​​、どこに置くべきか教えてください。
  2. Setup.pyを作成してから、「setup.py bdist_Egg」を起動してEggファイルを取得するだけで十分だと思います。確認お願いいたします?
  3. .pycファイルのみをEggファイルに含めることは可能ですか?
  4. .Eggファイルがあると、Java -jar <jar file>のように解凍せずにコードを開始することができますか?
88
yart

間違ったドキュメントを読んでいます。これが必要です: https://setuptools.readthedocs.io/en/latest/setuptools.html#develop-deploy-the-project-source-in-development-mode

  1. Setup.pyの作成については、Pythonの標準ライブラリドキュメント here のdistutilsドキュメントで説明されています。主な違い(python eggs)の場合)はimport setup from setuptoolsではなく、distutilsから。

  2. うん。それは正しいはずです。

  3. そうは思いません。 pycファイルは、バージョンとプラットフォームに依存します。 Eggを開いて(Zipファイルにするだけで).py残されたファイル.pycファイルですが、推奨されません。

  4. よく分かりません。それが「開発モード」かもしれません。または、「py2exe」または「py2app」モードを探していますか?

72
wisty

#4の場合、アプリのjarファイルでJavaを開始するのに最も近いものは、Python 2.6、 executable Zip filesおよびディレクトリ

python myapp.Zip

Myapp.Zipは、実行されるスクリプトファイルとして実行される__main__.pyファイルを含むZipです。パッケージの依存関係もファイルに含めることができます。

__main__.py
mypackage/__init__.py
mypackage/someliblibfile.py

Eggを実行することもできますが、呪文はそれほど素敵ではありません。

# Bourn Shell and derivatives (Linux/OSX/Unix)
PYTHONPATH=myapp.Egg python -m myapp
rem Windows 
set PYTHONPATH=myapp.Egg
python -m myapp

これにより、myapp.EggがPythonパスに置かれ、-m引数を使用してモジュールが実行されます。myapp.Eggは次のようになります。

myapp/__init__.py
myapp/somelibfile.py

そしてpythonは__init__.pyを実行します(コマンドラインで使用するには、アプリで__file__=='__main__'を確認する必要があります)。

Eggファイルは単なるZipファイルなので、Zipツールを使用して__main__.pyをEggに追加し、python 2.6で実行可能にし、python myapp.Eggのように実行できる場合がありますPYTHONPATH環境変数が設定されている上記の呪文の代わりに。

Shebang を使用して直接実行可能にする方法など、実行可能なZipファイルの詳細については、 Michael Foordのテーマに関するブログ投稿 を参照してください。

30
lambacck

配布には、今ではEggではなく python wheels を使用すべきだと思います。

ホイールはpythonディストリビューションの新しい標準であり、eggを置き換えることを目的としています。pip> = 1.4およびsetuptools> = 0.8でサポートが提供されます。

10
Hanfei Sun