1. ホーム
  2. python

[解決済み] distribute, distutils, setuptools, distutils2 の違い?

2022-03-16 11:51:59

質問

状況

オープンソースのライブラリを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のパッケージングの状況についてまとめてみました。

サポートされているツール

非推奨/廃止されたツール。

  • distribute のフォークでした。 setuptools . 同じ名前空間を共有していたので、Distributeをインストールしていた場合。 import setuptools は、実際にはDistributeと一緒に配布されたパッケージをインポートすることになります。 DistributeはSetuptools 0.7にマージされました。 だから、もうDistributeを使う必要はないんだ。実際、Pypi上のバージョンはSetuptoolsをインストールするための互換性レイヤーに過ぎません。

  • distutils2 の長所を生かそうとしたものです。 distutils , setuptoolsdistribute を、Pythonの標準ライブラリに含まれる標準ツールにした。という考えでした。 distutils2 は古いバージョンのPython用に配布されることになり distutils2 にリネームされます。 packaging Python 3.3では、標準ライブラリに含まれることになります。しかし、この計画は意図した通りには進まず、現在は distutils2 は放棄されたプロジェクトです . 最新のリリースは2012年3月で、そのPypiホームページはようやくその死を反映するように更新されました。

その他

他のツールもありますので、ご興味のある方はこちらをご覧ください。 プロジェクト概要 Pythonパッケージングユーザーガイドに掲載されています。そのページを繰り返さないため、また、質問と答えが一致するように、それらすべてをリストアップすることはしません。 distribute , distutils , setuptoolsdistutils2 .

推薦の言葉

すべてが初めてで、何から手をつけていいかわからない場合。 を学ぶことをお勧めします。 setuptools とともに pipvirtualenv といった具合に、いずれも非常にうまく機能しています。

を調べるのであれば virtualenv は、この質問に興味があるかもしれません。 とはどのような違いがあるのでしょうか? venv , pyvenv , pyenv , virtualenv , virtualenvwrapper などでしょうか? . (そうなんです、一緒にうなってしまうんです)。