Gist:私たちがpip install package
によってトリガーされていることをsetup.pyで検出する最良の方法は何ですか?はsetup.pyのピップを検出します
背景: 私はパッケージ(Cライブラリ用のバインディング)を持っています。私はライブラリ自体を含む卵を提供しています。私のreadme/docsでは、このパッケージは特定のプラットフォームでは「easy_install-able」であることに注意してください。ソースからビルドするとき(例えばpipで)、ライブラリ自体はビルドの依存関係です。問題は、ピップがeasy_installの完全な置き換えであると間違って信じているユーザーを、私はやや定期的に混乱させており、ライブラリーなしで、あるいは実際に卵が欲しいコンパイラなしでシステム上で動作することを期待しているということです。
ビルドがpipによってトリガーされたことを検出したいので、ライブラリが不足しているために失敗したらフレンドリーな "pip!= easy_install"メッセージを提供できます。それは完璧である必要はありません、ちょうどpip install package
の最も一般的なケースをキャッチします。検査では、これを行うには、特に堅牢な方法があるように、それはいないようだ、と私は出ている最高のは、次のとおりです。
probably_using_pip = '--single-version-externally-managed' in sys.argv
を検出するためのより良い(またはより良いまだ、正式な)方法はありますsetup.pyのpip?
ライブラリが存在しないときに "setup.py install"を実行したときと異なるエラーメッセージが表示されるのはなぜですか? – joeforker
'setup.py install'を実行すると、あなたは確かにソースからビルドしています。 'pip install'を実行すると、人々はバイナリを期待しているかも知れませんが、実際にはpipとeasy_installの違いを理解できません。この質問は、pip 1.5がデフォルトでホイールをサポートしているため、私の特定のケースにはもう関係しません。 – minrk
さらにいくつかのコンテキスト:質問(2年前)の時点で、私のパッケージはコンパイラを持たないマシンにインストールされ、pipはバイナリフォーマットをサポートしませんでした。 easy_installは正常に動作しましたが、pipはコンパイルに失敗します。このため、 'pip install'が失敗した人に、easy_installが望ましいかもしれないことを知らせたいと思っていました。 – minrk