24

setup.pyPython には、スクリプトを実行することでパッケージを「疑似インストール」する機能がdevelopありinstallます。これにより、python 環境が変更され、パッケージを現在の場所からインポートできるようになります (site-packageディレクトリにはコピーされません)。これにより、他のパッケージで使用されるパッケージを開発できます。ソース コードはその場で変更され、変更は simple を介して残りの python コードで利用できますimport

コマンドがと同じレベルのメタデータを含むフォルダーをsetup.py develop作成することを除いて、すべて正常に機能します。ソース コードと一時ファイルを混在させるのはあまり良い考えではありません。このフォルダは、vcs から始まりバックアップ システムで終わる複数のツールの「無視」リストに追加する必要があります。.egg-infosetup.py

元のソースコードが一時ディレクトリやファイルによって汚染されないように、別の場所にディレクトリをsetup.py develop作成して使用することはできますか?.egg-info

4

3 に答える 3

19

setup.py developその場でPythonの卵を作成します。Python環境を[変更]しない ため、パッケージを現在の場所からインポートできます。それでも、その場所をPython検索パスに追加するか、配置されているディレクトリを現在のディレクトリとして使用する必要があります。

インプレースeggを作成するのはコマンドの仕事です。これには、developC拡張機能のコンパイル、2to3 python変換プロセスの実行によるPython3互換コードの作成、および他のpythonコードが依存している可能性のあるメタデータの提供が含まれます。パッケージをeggとしてsite-packagesディレクトリにインストールすると、同じメタデータもそこに含まれます。データは確かに一時的なものではありません(setup.py他のツールで簡単に解析できるようにファイルから抽出されます)。

その目的は、パッケージの開発中に、存在するメタデータに依存するより広いシステムでパッケージを使用するときに、そのメタデータに依存できるようにすることです。たとえば、ビルドアウト開発デプロイメントではmr.developer、作業が必要なときに特定のパッケージのソースコードをフェッチするプロセスを自動化するためによく使用します。これにより、パッケージを開発エッグとしてビルドし、作業中にデプロイメントに結び付けます。コード。

ディレクトリは特定の目的を果たしていることに注意してください。つまり.egg-info、setuptoolsエコシステム内の他のツールにパッケージがインストールされて利用可能であることを通知します。パッケージがセットアップ内の別のeggの依存関係である場合、その依存関係は満たされます。pipそしてeasy_install、ビルドアウトは代わりにどこかから卵をフェッチしようとはしません。

.egg-infoディレクトリの作成とは別に、コマンドが実行するの唯一のことは、拡張機能をインプレースで構築することです。したがって、代わりに探しているコマンドは次のとおりです。

setup.py build_ext --inplace

setup.py developこれは、ディレクトリを除外するのとまったく同じことを行い.egg-infoます。また、.pthファイルは生成されません。

.pthファイルのみを生成し、.egg-infoディレクトリ生成を除外する方法はありません。

技術的には、名前空間パッケージをサポートするためsetup.py developにsetuptoolsファイルがインストールされているかどうかもチェックしますが、ここでは関係ありません。site.py

于 2012-11-24T05:51:06.843 に答える
4

適切な方法は、すべてのソース ファイルを、プロジェクト名と同じ名前の特別なディレクトリ内に保持することです (他の言語を使用するプログラマは、コードをsrcディレクトリ内に保持します)。したがって、setup.pyファイルがmyprojectディレクトリ内にある場合は、ファイルを に保持する必要がありますmyproject/myproject。この方法では、メイン ディレクトリで何が起こっても、ソースを他のファイルから分離したままにします。

私の提案は、ブラックリストの代わりにホワイトリストを使用することです-myprojectディレクトリ内にあるこれらを除くすべてのファイルを無視するようにツールに指示します。ignoreこれは、頻繁にリストに触れないようにする最も簡単な方法だと思います。

于 2012-11-25T18:23:14.333 に答える
2

--install-dirオプションを試してください。--build-dir建物のディレクトリを変更するために使用することもできます。

于 2012-10-15T19:28:57.313 に答える