Python setup.py開発対インストール


335

setup.pyに2つのオプションがdevelopありinstall、混乱しています。このサイトによると、を使用developすると、site-packagesディレクトリへの特別なリンクが作成されます。

人々は、私python setup.py installが新規インストールに使用python setup.py developし、セットアップファイルに変更を加えた後に使用することを提案しています。

誰もがこれらのコマンドの使用法にいくつかの光を当てることができますか?

回答:


468

python setup.py install 自分で開発/変更/デバッグしないパッケージ(通常はサードパーティ)をインストールするために使用されます。

あなた自身のものについては、最初にパッケージをインストールしてから、毎回パッケージを再インストールする必要なしにコードを頻繁に編集できるようにしたいと思います—これがまさに何をするかpython setup.py developです:パッケージをインストールします(通常はソースフォルダーのみ) (仮想)環境にインストールした後、コードを簡単に編集し、変更をすぐに有効にすることができる方法で。

pip install .(インストール)とpip install -e .(開発者インストール)を使用してパッケージをインストールすることを強くお勧めします。setup.py直接起動すると、プルプレリリースや互換性のないパッケージバージョンなど、多くの依存関係に対して誤った処理が行われたり、を使用したパッケージのアンインストールが困難になったりするためpipです。


81
エリックは正しい。知っておくと便利なのは、ハッキングが終わったときのオプションがsetup.py develop付いている--uninstallことです。
— フィラダムス2013

5
ここで最後に考えたのはsetup.py develop、Pythonパッケージをハッキングするときの別のオプションは、「パッケージを適切に解決するための単純な(ただし明示的な)パス変更」を使用することですre Kenneth Reitz
— philadams

4
python setup.py developローカル開発用にCeilometerをセットアップしようとすると問題が発生しました。を介して発生する問題pip install -e PATHを回避するために、私は(virtualenv内で)使用することになりましたeasy_install。
— Joe D'Andrea

1
これが重要かどうかはわかりませんが、Python 3などを使用している場合、python setup.py develop別の方法で実行する必要がありますか?
— チャーリーパーカー

1
これはpython3で動作しますが、衝突する可能性があるため、現在のpipインストールを削除することを忘れないでください(現時点ではそれが起こりました)。
— レオGermond

124

ドキュメントから。developパッケージをインストールしませんが、それは作成され.egg-link、プロジェクトのソースコードディレクトリに展開ディレクトリバックに。

インストールのようなものですが、コピーする代わりにsite-packagesシンボリックリンクを追加します(.egg-linkマルチプラットフォームシンボリックリンクとして機能します)。

そうすれば、少し変更を加えるたびに再インストールする必要なく、ソースコードを編集して変更を直接確認できます。これは、あなたがそのプロジェクトの開発者である場合に役立ちますdevelop。あなたが誰か他の人のパッケージをインストールしているだけなら、あなたは使うべきですinstall


24

このdevelop方法を使用するときに人々が役立つと感じるもう1つのことは、--usersudoなしでインストールするオプションです。例:

python setup.py develop --user

の代わりに

sudo python setup.py develop

11
IIUCあなたはsetup.py developあなたのシステムでは決してすべきではありません、これはvirtualenvでのみ意味があります。
— dividebyzero

2
@dividebyzero python setup.py develop --user私が正しく理解していれば、常にを使用する必要があるということですか?また、パッケージのインストール先を教えてくださいpython setup.py develop --user。ありがとう!
— ROBOT AI

2
は--userホームアカウントのディレクトリにインストールされ、システムの他のユーザーには影響しないと思います。develop実際には、すべてをコピーするのではなく、プロジェクトのソースディレクトリへのリンクを行います。develop --userOK developで、virtualenvでも大丈夫です。developプロジェクトのソースコードの個人用コピーにあるプロジェクトを指すものを他のユーザーが使用している可能性があるため、実際のシステムだけが奇妙です。
— dividebyzero '19

4
ただし、多くの(ほとんどの)人々はマルチユーザーシステムで実行していません
— patstew

1
@ boatcoder、MacおよびLinux(およびWindows)はマルチユーザー対応システムかもしれませんが、おそらく開発者が彼のデスクトップの唯一の(実際の)ユーザーアカウントです。
— MestreLion
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.