私はPythonライブラリが必要なときにpipを使ってPyPiからフェッチします。プロジェクトを作成して共有したいのであれば、setup.pyファイルを用意するだけで簡単にインストールできます。したがって、私は卵や車輪パッケージのユースケースが何であるか疑問に思っていました。Pythonパッケージ(eggなど)が必要な理由
答えて
Python Packaging User Guideは、このトピックに次のように言っている:
ホイールと卵はは、建物やコンパイルを必要としないことをインストールアーティファクトを必要とするユースケースをサポートすることを目指して、両方のパッケージ形式ですこれは、テストおよび制作ワークフローで高価になる可能性があります。
これらの形式は、バイナリ拡張モジュールを含むパッケージを配布するために使用できます。これにより、インストール時にコンパイルが必要になります。何のコンパイルがsource distribution関与されていない場合は
は、原則的には十分であるが、ユーザーガイドでは、まだパフォーマンス上の理由からホイール作成することをお勧めします。
python setup.py sdist
:、あなたがソースのディストリビューションを作成する必要があります
最小限に
"ソースディストリビューション"はビルドされていない(ビルドディストリビューションではない)ため、pipでインストールする場合はビルドステップが必要です。 ディストリビューションが純粋なPython(拡張子を含まない)であっても、ビルドステップを使用してsetup.pyからインストールメタデータを構築します。
[...]
また、プロジェクトのホイールを作成する必要があります。ホイールは、ビルドプロセスを経ることなくインストールできるビルドパッケージです。ホイールのインストールは、ソース配布からのインストールよりも、エンドユーザーにとって大幅に高速です。
簡潔に言えば、パッケージは利便性の高いもので、主にユーザーのためのものです。
ホイールパッケージは、純粋なPython、プラットフォームに依存するコード、またはコンパイルされた拡張機能を含むプロジェクトの配布とインストールのプロセスを統一します。パッケージがPythonまたはCで書かれているのであれば、ユーザは気にする必要はありません。
ありがとうございますが、私が仕事をしているすべてのプロジェクトには設定ファイルとPythonスクリプトしかありませんので、コンパイルする必要はありません。したがって、私はパッケージングが通常使用されるものではないと考えています(少なくとも私の場合) –
ありがとう!私の質問に答えています:) –
Eggパッケージは古い標準ですので、現在は無視してください。それらが作成されないように./setup.py install
の代わりにpip install .
を使用してください。 (付記:これはまた、.zip
であり、Pythonはパッケージデータを読み込みます。最も正確なものではありません)
ホイールパッケージは、新しい標準です。 Windows、macOS、およびLinux用の移植性のあるバイナリパッケージの作成を可能にします(yes, Linux!)。現在では、pip install PyQt5
(例として)を実行するだけで、正常に動作し、システム上でC++コンパイラとQtライブラリは必要ありません。すべてが事前にコンパイルされ、ホイールに組み込まれています。 setup.py
(すべてのメタデータがホイールに入っています)を実行しないほうが安全なので、バイナリ以外のパッケージも有効です。 (付録:これらはまた.zip
ですが、インストール時に開梱されています)
ありがとうございます。しかし、私のプロジェクトにpythonスクリプトと設定ファイルだけが含まれていると、ホイールパッケージは効果がありません。 –
@ M.Buil http://pythonwheels.com/ - *インストールのための任意のコードの実行を避けます。 (setup.pyは避けてください)。インストールの一環として.pycファイルを作成して、使用するPythonインタプリタと一致するようにします。プラットフォームとマシン間の一貫性のあるインストール –
- 1. "rec"が必要な理由
- 2. TextWatcherが必要な理由
- 3. RIAが必要な理由
- 4. Visual C++再頒布可能パッケージが必要な理由
- 5. random.choiceのリストが必要な理由
- 6. refrehアクセストークンのリフレッシュトークンが必要な理由
- 7. AMQPにmessageIdが必要な理由
- 8. 識別子が必要な理由
- 9. ハードリンクとソフトリンクが必要な理由
- 10. WPFでAutomationPropertiesが必要な理由
- 11. mongodb getSisterDBが必要な理由
- 12. RVMにYAMLが必要な理由
- 13. カスタムディレクティブにBindToControllerが必要な理由
- 14. メテオでパッケージインポートが必要な理由
- 15. HerokuにResque 1.22.0が必要な理由
- 16. JDBC-ODBCにドライバが必要な理由
- 17. ECUキャリブレーションが必要な理由
- 18. rvmにログインシェルが必要な理由
- 19. Dockerにユニオンファイルシステムが必要な理由
- 20. return文が必要な理由を理解できない
- 21. テスト内のサービスのプロバイダが必要な理由(不明なプロバイダ)
- 22. initialize()ルビの明示的な内部が必要な理由
- 23. Javaで異なるクラスローダーが必要な理由
- 24. AspNetCompilerタスクのVirtualPathプロパティが必要な理由
- 25. telnetlib read_all()の後にexit()またはexecが必要な理由
- 26. ng-initで変数の初期化が必要な理由:AngularJS
- 27. FirebaseにApp Team IDが必要な理由とその用途
- 28. Railsコントローラのアクションメソッドにパラメータが必要な理由
- 29. ブートストラップのツールチップJavaScriptの初期化がカスタムスタイルに必要な理由
- 30. SwiftのinstantiateViewController(withIdentifier :)の後にダウンキャストが必要な理由
私はそれが何であるか知っています。コンパイルのコンセプトはPythonには当てはまりません(例えば、Cやjavaなど)。 –