[解決済み] distribute, distutils, setuptools, distutils2 の違い?
質問
状況
オープンソースのライブラリをPython 3に移植しようとしています。 SymPy と思っている人がいたら、それは間違いです(笑)。
そこで
2to3
は、Python 3 用にビルドする際に、自動的に そのためには
distribute
. したがって、私は現在のシステムを移植する必要があり、それは(doctestによれば)次のとおりです。
distutils
.
問題点
残念ながら、これらのモジュールの違いは何なのかよくわかりません。
distutils
,
distribute
,
setuptools
. これらはすべて、ほとんどの状況で互換性があるように意図された、互いにフォークであるように見えるので、ドキュメントは最高に大雑把です(しかし、実際には、すべてではありません)...などなど。
質問
どなたか違いを教えてください。
何を使えばいいんですか? 最新のソリューションは何ですか?(余談ですが、このような場合、「Space」を「Space」に移植するためのガイドがあるとありがたいのですが。
Distribute
しかし、それは質問の範囲を少し超えています...)
どのように解決するのですか?
2020年3月現在、この質問に対する他の回答は、ほとんどが数年前のものです。Pythonのパッケージング問題に関するアドバイスに出会ったら、発行日を見ることを忘れずに、古くなった情報を信用しないようにしましょう。
その Python パッケージング ユーザガイド は一読の価値ありです。すべてのページに"last updated"の日付が表示されているので、マニュアルの最新性を確認することができ、かなり充実した内容になっています。Python Software Foundation の python.org のサブドメインでホストされているという事実が、このマニュアルの信憑性を高めています。その プロジェクト概要 のページは、特にここに関連しています。
ツールの概要です。
Pythonのパッケージングの状況についてまとめてみました。
サポートされているツール
-
distutils
は、現在でもPythonのパッケージングの標準ツールです。標準ライブラリに含まれています(Python 2とPython 3)。単純なPythonの配布には便利ですが、機能が不足しています。このツールはdistutils
Pythonパッケージでインポートすることができます。setup.py
スクリプトを作成します。 -
setuptools
は、Distutilsの制限を克服するために開発され、標準ライブラリには含まれていない。というコマンドラインユーティリティが導入されました。easy_install
. またsetuptools
Pythonパッケージでインポートすることができます。setup.py
スクリプトとpkg_resources
Python パッケージで、ディストリビューションにインストールされたデータファイルの場所を特定するために、コード内でインポートすることができます。その欠点のひとつはdistutils
Pythonパッケージ。とうまくいくはずです。pip
. 定期的にリリースされています。 -
scikit-build
は、コンパイルされた Python 拡張をビルドするために内部的に CMake を使用する、改良されたビルドシステムジェネレータです。scikit-build は distutils をベースにしていないため、その制限を受けることはありません。ninja-build が存在する場合、scikit-build は大規模なプロジェクトを代替品よりも 3 倍以上速くコンパイルすることができます。これはpip
. -
distlib
のような上位のツールで使用される機能を提供するライブラリです。pip
.-
<サブ
公式ドック
|
Pypiのページ
|
Bitbucketレポ
|
distlib
Pythonパッケージユーザーガイドの項
-
<サブ
公式ドック
|
Pypiのページ
|
Bitbucketレポ
|
-
packaging
のような上位のツールで使用される機能を提供するライブラリでもあります。pip
とsetuptools
-
<サブ
公式ドック
|
Pypiのページ
|
GitHubレポ
|
packaging
Pythonパッケージユーザーガイドの項
-
<サブ
公式ドック
|
Pypiのページ
|
GitHubレポ
|
非推奨/廃止されたツール。
-
distribute
のフォークでした。setuptools
. 同じ名前空間を共有していたので、Distributeをインストールしていた場合。import setuptools
は、実際にはDistributeと一緒に配布されたパッケージをインポートすることになります。 DistributeはSetuptools 0.7にマージされました。 だから、もうDistributeを使う必要はないんだ。実際、Pypi上のバージョンはSetuptoolsをインストールするための互換性レイヤーに過ぎません。 -
distutils2
の長所を生かそうとしたものです。distutils
,setuptools
とdistribute
を、Pythonの標準ライブラリに含まれる標準ツールにした。という考えでした。distutils2
は古いバージョンのPython用に配布されることになりdistutils2
にリネームされます。packaging
Python 3.3では、標準ライブラリに含まれることになります。しかし、この計画は意図した通りには進まず、現在はdistutils2
は放棄されたプロジェクトです . 最新のリリースは2012年3月で、そのPypiホームページはようやくその死を反映するように更新されました。
その他
他のツールもありますので、ご興味のある方はこちらをご覧ください。
プロジェクト概要
Pythonパッケージングユーザーガイドに掲載されています。そのページを繰り返さないため、また、質問と答えが一致するように、それらすべてをリストアップすることはしません。
distribute
,
distutils
,
setuptools
と
distutils2
.
推薦の言葉
すべてが初めてで、何から手をつけていいかわからない場合。
を学ぶことをお勧めします。
setuptools
とともに
pip
と
virtualenv
といった具合に、いずれも非常にうまく機能しています。
を調べるのであれば
virtualenv
は、この質問に興味があるかもしれません。
とはどのような違いがあるのでしょうか?
venv
,
pyvenv
,
pyenv
,
virtualenv
,
virtualenvwrapper
などでしょうか?
. (そうなんです、一緒にうなってしまうんです)。
関連
-
PicgoのイメージベッドツールをPythonで実装する
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] urllib、urllib2、urllib3、requestsモジュールの違いは何ですか?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] 0から9までのランダムな整数を生成する
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python関数の高度な応用を解説
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] Python 3でpipをインストールする方法は?
-
[解決済み] Python 3: ImportError "No Module named Setuptools" (Setuptoolsという名前のモジュールはありません)
-
[解決済み】venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenvなどの違いは何ですか?