0

私はビルド スクリプトを素晴らしい Waf ツールに基づいて作り直している最中です(以前から SCons を使用していましたが、あまりにも遅すぎます)

とにかく、次の状況に遭遇しましたが、解決策が見つかりません。

  • 以前にビルドされたいくつかの卵ファイルに依存する製品があります。
  • ビルド プロセスの一部としてPyInstallerを使用して製品をパッケージ化しようとしています。
  • 最初に依存関係を構築します。
  • 次に、PyInstaller を実行して、ビルドした卵に依存する製品をパッケージ化します。パッケージ化プロセスの一環として、これらの卵ファイルをロードできるようにするには、PyInstaller が必要です。

これは簡単に聞こえます: どうあるPYTHONPATHべきかを考え出し、変数を正しく設定するコピーを作成し、以前に構成した環境を env 引数として渡してsys.environPyInstaller スクリプトを呼び出します。subprocess.Popen

問題は、PYTHONPATH追加する卵が zipsafe としてパッケージ化された拡張モジュールである場合、設定だけでは十分ではないように思われることです。この場合、組み込みライブラリをインポートできないことがわかります。

卵を解凍すると (ディレクトリの名前を .egg に変更)、それ以上の設定なしで卵をインポートできますが、この場合はこれが必要なわけではありません。

次のようにして、卵をサブシェルからインポートすることもできます。

  • PYTHONPATHインポートしたい卵を含むディレクトリに設定します(卵自体のパスではありません)
  • Python シェルをロードしpkg_resources.require、卵を見つけるために使用します。

これが完了すると、卵は通常どおりロードされます。繰り返しますが、これは実用的ではありません。なぜなら、これらの卵をオフからインポートする準備ができている方法で Python シェルを実行できる必要があるからです。

汚いオプションは、実際のターゲット スクリプトを呼び出す前に上記のアクションを実行するラッパー スクリプトを出力することですが、これは間違っているように思われます。これを行うためのより良い方法があるはずです。

4

2 に答える 2

3

ええ、これは私の悪いことだったと思います。問題zipsafeは、拡張パッケージのsetup.pyのフラグがFalseに設定されていたことであるようです。これは、それをそのように扱う能力に影響を与えるようです。

これをTrueに設定したので、各ファイルをに追加するだけで、eggファイルをインポートできますPYTHONPATH

誰かがこの答えをいつか役立つと思ってくれることを願っています!

于 2009-04-10T12:32:33.910 に答える
1

解決策はありますが、コアシステムの python をいじることなく Python パッケージをインストールしてテストできる python の仮想環境を作成する「virtualenv」をいつでも試すことができます。

http://pypi.python.org/pypi/virtualenv

于 2009-04-10T18:32:32.547 に答える