リモートサーバーにdistutilsパッケージをインストールする必要があるビルドアウトスクリプトに取り組んでいます。
PyPi には、これを実行するための 2 つのレシピ ( collective.recipe.distutils 0.1 と zerokspot.recipe.distutils 0.1.1 )があります。
後者のモジュールは前者の派生物であり、最初のモジュールよりも少し便利ですが、どちらも同じ問題に悩まされています。これについては次に説明します。
bootstrap.py が実行されると、zc.buildout パッケージがダウンロードされ、buildout の Egg ディレクトリに配置されます。これにより、./bin/buildout が zc.buildout コードにアクセスできるようになりますが、/usr/local/python はこの時点で zc.buildout について何も知りません。
ビルドアウトは、サブプロセス内で「python setup.py install」を実行してパッケージをインストールしようとします。/usr/local/python に zc.buildout がインストールされていないため、これにより ImportError が生成されます。
だから、私はいくつかの解決策を持っています。
リモート サーバーで easy_install を使用して zc.buildout をインストールします。このオプションはまったく好きではありません。非常に重要でないモジュールの特殊なケースになります。
zerokspot.recipe.distutils を変更して、このように「import zc.buildout」の周りに try ブロックを配置すると、zc.buildout がインストールされていなくてもインストールされます。これは問題のない解決策ですが、ややハックです。
subprocess を、distutils api または setuptools api を使用してパッケージをインストールするコードに置き換えます。これが私の意見では最善の解決策です。
問題は、#3 をどのように行うかです。
ありがとう、タラス
PS: zc.buildout に依存しない別のパッケージを作成することで問題を解決しました。私のパッケージはtaras.recipe.distutilsと呼ばれ、pypi で入手できます。