「pip install --editable ./」vs「python setup.py develop」


177

大きな違いはありますか

pip install -e /path/to/mypackage

とsetuptoolsバリアント?

python /path/to/mypackage/setup.py develop

1
:これは、開発モードを記述した更新されたリンクのように見えるsetuptools.readthedocs.io/en/latest/...
PaulR

あなたは(開発/編集可能モードでパッケージ)アンインストールに興味がある場合は、この質問をしてみてください:stackoverflow.com/questions/17346619/...
チャーリー・パーカー

回答:


130

setup.py直接呼び出さないようにしてください。パッケージをインストールしたことをpipに正しく伝えません。

pip install -e

ローカルプロジェクトの場合、「SomeProject.egg-info」ディレクトリはプロジェクトパスを基準にして作成されます。これはsetup.py develop、現在の作業ディレクトリに直接関連する「egg-info」を作成するだけの場合よりも優れている点の1つ です。

詳細:ドキュメント

setuptoolsのドキュメントも読んでください。


変更を有効にするために、ファイルの変更を行った後、ユーザーは「python setup.py sdist」を再度実行する必要がありますか?
変数の

デバッグするし、「のpython setup.py開発」「set_trace」が(setup.pyファイル自体を)必要がある場合は、それを可能にする
mirek

2番目のURLが壊れています。
bad_coder

どちらもうまくいきます。
ソボレフ

76

もう1つの違い:pip install -eホイールを python setup.py develop
使用するが使用しない。

を使用するとinstall、次のコマンドを使用して同じ動作を実現できます
pip install -e /path/to/package --no-use-wheel

ホイールの詳細:Pythonホイール


18
よると、なおpip.pypa.io/en/stable/reference/pip_install--no-use-wheelの賛成で推奨されていません--no-binary :all:
Nzbuu

sdistを使用して作成されたパッケージにpip install -eを実行できますか?
変数

36

好むかもしれもう一つの違いは、pip install -e中にあなたのプロジェクトが依存関係を持っている場合ということですinstall_requiressetup.py、その後pip install -e .ながら、ピップとの依存関係をインストールしpython setup.py developてインストールすることができますeasy_install「卵-情報」を上記のように:、および問題が再び発生することがあります。カスタムgit URLで卵識別子を添付してinstall-requires使用dependency_linksする場合、これは特に煩わしい場合があります。


1
これは、私のプライベートパッケージがインストールされなかった理由を完全に説明しています。pypiではなく、私のdevpiサーバーにあります。ありがとう。
2018年

パッケージが編集可能になると言ったとき、パッケージファイルに変更を加えた後、ユーザーは再度「python setup.py sdist」を実行する必要があることを意味しますか?または上記のコマンドを実行する必要はありませんか?
可変

@variableを使用してローカルパッケージをインストールするとpip install -e .、基本的に、関連するPythonサイトパッケージディレクトリにシンボリックリンクが作成され、作業コピーが示されます。その作業コピーにコードの変更が加えられると、「インストール済み」バージョンに即座に反映されるため、インストールコマンドを再実行する必要はありません。これは主に、インストール可能なパッケージを表すリポジトリでの開発に役立ちますが、たとえば、絶対インポートのみを使用してモジュールのコレクションを作成する場合などにも便利です
。e

0

さらに別の違い:python setup.py developプレリリースと見なされるバージョンで実行する場合(おそらく、リリースをチェックアウトしていないときにgitクローンから実行しているため)、依存関係のプレリリースのインストールを有効にします。一方、これらのプレリリースが必要な場合pip install --editableは、--pre明示的に渡す必要があります。

誤って使用されたプレリリースのCIログを参照し、ここで修正済みビルドと比較してください。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.