7

私はpythonを埋め込もうとしており、pythonライブラリのdllとzipを提供し、インストールされたpythonを使用しません。つまり、ユーザーが Python を持っていない場合、提供された dll/zip を使用してコードを動作させたいと考えています。

この投稿は、私にとってはうまくいかないことを除いて、プロセスを説明しているようです。

以下を実行すると、Python27.dll と、DLL および Lib フォルダーを含む Python27 という名前のフォルダーがある限り、コードが実行されます。

Py_SetProgramName(argv[0]);  /* optional but recommended */
Py_SetPythonHome("Python27");
Py_Initialize();

Python27 フォルダーを削除すると、コードが失敗するため、インストールされている Python ではなく、ローカル コピーを取り込みます。

ただし、ローカルの Python27 フォルダーを圧縮すると、コードの実行が停止し、"ImportError: No module named site" が表示されます。

PEP273は、これがうまくいくように聞こえますが、私が試したことはすべて失敗しました。

埋め込まれた python を zip ファイルから実行する方法を誰かが明らかにすることはできますか?

未回答の関連する質問があることを考えると、何を修正する必要があるのか​​ わからなくても、zipファイルからの読み取りに成功した場合は、コメントを追加していただけると助かると思います.

少なくとも、答えを探し続ける必要があるかどうかを理解するのに役立ちます!

更新: 何を試しても (提案されているように LoadLibrary を使用しても)、完全に解凍されたディレクトリからプログラムを実行できます。DLLs/* と Lib/* を含むディレクトリを削除し、代わりに Python27.zip を入れると、

ImportError: No module named site
4

4 に答える 4

2

あなたの元の問題は、DLLとLibフォルダーの内容をpython zipに配置する必要があるときに、フォルダーをpython zipに配置したことだと思います。

これの代わりに:

python27.zip
  DLLs
    *.*
  Lib
    *.*

あなたが持っている必要があります:

python27.zip
  *.* from DLLs
  *.* from Lib
于 2015-04-15T13:17:30.263 に答える