web-dev-qa-db-ja.com

WindowsのPython "組み込み"インストールにパッケージを追加する

ドキュメント から:

埋め込まれたディストリビューションは、最小限のPython環境を含むZipファイルです。

いいね! Pythonの64ビットWindows組み込みv3.6.5はわずか13MBです。コンパイルする代わりに、いくつかのpythonスクリプトをPythonがインストールされていないWin10マシンで実行するために最低限必要です。

今、私はほとんどの場合、機能を提供するために追加のパッケージをインポートする必要があります。しかし、pythonスクリプトをこの埋め込みバージョンのPythonと一緒に送信したい場合、どうすればよいか判断できません。たとえば、スクリプトがnumpyを使用している場合、どのように含めることができますか?つまり、この「埋め込み」内のライブラリ、つまり、どのWin10マシンでも単一の展開ファイルを解凍して、すぐにスクリプトを実行できるようにしますか?

(レギュラー pip install numpyは、50MBを超えるLibサブディレクトリを作成しているようです!しかし、「組み込み」デプロイメントの場合、デバッグのサポートや、ファイルのその大量に含まれるその他のサポートは必要ありません。)

9
feetwet

Python組み込みインストールを拡張する方法があります。ターゲットマシンで解凍してコードを実行するだけでFlask対応パッケージを作成できました。トリックはインストールすることです[ 〜#〜] exact [〜#〜]same python(通常のフルブローPython)のターゲットとして埋め込まれた小さなPython。バージョンだけでなくx86 、x64も一致する必要があります。

次に、通常のpythonでpipからモジュールをインストールし、NormalPython\Lib\site-packagesに移動して、表示されるすべての新しいファイルをコピーしますインストール後EmbeddedPython\Lib最後に追加Lib to pythonXX._pth埋め込み内部pythonフォルダ。

パッケージを見逃した場合に備えて、アプリケーションを完全にテストすることは非常に重要です。また、これは、.exeをScriptsフォルダーに追加するパッケージでも機能しません。おそらく、exeをScriptフォルダーにコピーし、それをパスに追加すると、トリックを実行できます。

5
Michał Rawluk

Python組み込みインストールを拡張する方法があります。トリックは、ターゲット組み込みpython()と同じpython version(私はそれをNormalPythonと呼びます)をインストールすることです。これをEmbeddedPythonと呼びます。バージョンとアーキテクチャは完全に一致する必要があります。

次に、NormalPythonのpipからモジュールをインストールします。 NormalPython\Scriptsでpipを見つけることができます。

NormalPython\Lib\site-packagesに移動し、pipを使用してインストールするものを何でもインストールした後に表示されるすべてのファイルをEmbeddedPython\Lib \にコピーします。

次に、埋め込まれたpythonフォルダ内のpythonXX._pthにLibを追加します。

これは、最新のpython embed and python install through https://www.python.org/downloads/windows / 。私はMichal Rawlukの答えを使用してそれを行いましたが、理解するのがやや難しかったので、少し異なって説明しようとしています。

1
Julio Peguero