11

を使用して Python C 拡張機能のバイナリ配布をアップロードした後、「エラー: /tmp/easy_install/package-name-etc-etc にセットアップ スクリプトが見つかりませんでした」python setup.py bdist uploadで失敗します。easy_install [my-package-name]

私は何を間違っていますか?

4

3 に答える 3

42

これは特定の問題に関連していない可能性がありますが、他の人に役立つ場合に備えてこの情報を提供しています.

を実行すると、まさにこのエラーが発生しましたeasy_install xyz。問題はxyz、現在の作業ディレクトリに名前の付いたサブディレクトリがあり、easy_install が、Web に出て実際のxyz. ローカルの xyz ディレクトリの名前を変更すると、一時的に問題が解決しました。

これは、指定したコマンド ライン引数が意図せずに同じ名前のファイルまたはフォルダーによって隠蔽される可能性がある多くの状況の 1 つです。もう 1 つの例は次のとおりです。テスト ターゲットを作成しようとしてmake実行し、たまたま名前の付いたフォルダーがあった場合、目的の動作は実行されません。その場合の解決策は、Phony Targetsを示すことです。make testtestmake

于 2013-02-03T17:38:07.153 に答える
8

easy_install は、ソース配布または卵のいずれかを見つけることを期待しています。ソース配布物 ( sdist) を PyPI (または使用している任意の配布サーバー) にアップロードし、Python パッケージに C 拡張機能が含まれている場合にのみ卵をアップロードし、Windows の卵のみをアップロードすることをお勧めします ( Can I create a single Egg for に対する私の回答を参照してください)。複数のバージョンの python? )。

このbdistコマンドは、追加の構成を行わずに、現在のプラットフォーム用にコンパイルされた python ファイル (およびコンパイルされた C 拡張機能) を含む.tar.gzまたはアーカイブを作成します (したがって、ファイルは含まれません)。これは、サイトのパッケージの場所で手で開梱し、卵を介して事前に配布することを目的としています。解凍すると、tarball に site-packages ディレクトリへの完全な絶対パスが含まれていることに気付くでしょう。.zipsetup.py

RPM または .deb ファイル、または単純な Windows インストーラーを生成するように構成できますbdistが、これらも PyPI および easy_install に関連しない他のディストリビューション システムにインストール バンドルを提供することを目的としています。

要約すると、ほとんどの場合、sdistソース配布物をアップロードし、インストール時に easy_install に (egg への) Python コンパイルを実行させるのが最善です。

コンパイル済みのディストリビューション (特定の Python バージョンとコンパイルされたプラットフォームに関連付けられている) をアップロードする場合は、bdist_egg代わりに コマンドを使用してください。

于 2011-06-04T16:42:54.423 に答える