はじめに
Pythonプログラムを配布する際、顧客にPythonランタイムをインストールしなくてもいいように組み込みパッケージを作成します。
ただし以下のランタイムのインストールは必要です。
注釈 埋め込み用配布には Microsoft C Runtime は含まれません。これを提供するのはアプリケーションのインストーラの責務です。そのランタイムは既に以前にユーザのシステムにインストール済みかもしれませんし、Windows Update により自動で更新されているかもしれません。このことはシステムディレクトリに ucrtbase.dll があるか探せばわかります。
環境
- windows10
- python-3.10.1-embed-amd64
手順
Pythonのダウンロード
公式からダウンロードします。
(今回はpython-3.10.1-embed-amd64をダウンロードしました。)
以降、PowerShellで操作します。
PS C:\home\work> mkdir tools
ディレクトリ: C:\home\work
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2022/01/14 9:41 tools
PS C:\home\work> wget https://www.python.org/ftp/python/3.10.1/python-3.10.1-embed-amd64.zip -o tools/python-3.10.1-embed-amd64.zip
PS C:\home\work> cd .\tools\
PS C:\home\work\tools> Expand-Archive -Path .\python-3.10.1-embed-amd64.zip
PS C:\home\work\tools> rm .\python-3.10.1-embed-amd64.zip
python310._pthを編集
適当なエディタで編集します。
import siteのコメントアウトをします。
# Uncomment to run site.main() automatically
import site <<==ここ
pipのインストール
(pythonのフォルダへ移動)
PS C:\home\work\tools> cd .\python-3.10.1-embed-amd64\
PS C:\home\work\tools\python-3.10.1-embed-amd64> wget "https://bootstrap.pypa.io/get-pip.py" -O "get-pip.py"
PS C:\home\work\tools\python-3.10.1-embed-amd64> .\python.exe .\get-pip.py
Collecting pip
Using cached pip-21.3.1-py3-none-any.whl (1.7 MB)
・・・
Successfully installed pip-21.3.1 setuptools-60.5.0 wheel-0.37.1
お試しでpipでrequestsをインストール
PS C:\home\work\tools\python-3.10.1-embed-amd64> .\python.exe -m pip install requests
Collecting requests
・・・
Successfully installed certifi-2021.10.8 charset-normalizer-2.0.10 idna-3.3 requests-2.27.1 urllib3-1.26.8
PS C:\home\work\tools\python-3.10.1-embed-amd64>
\Lib\site-packagesにpipでインストールされていることを確認。作業直後には以下のようになっています。
PS C:\home\work\tools\python-3.10.1-embed-amd64> ls .\Lib\site-packages\
ディレクトリ: C:\home\work\tools\python-3.10.1-embed-amd64\Lib\site-packages
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2022/01/14 9:57 certifi
d----- 2022/01/14 9:57 certifi-2021.10.8.dist-info
d----- 2022/01/14 9:57 charset_normalizer
d----- 2022/01/14 9:57 charset_normalizer-2.0.10.dist-info
d----- 2022/01/14 9:57 idna
d----- 2022/01/14 9:57 idna-3.3.dist-info
d----- 2022/01/14 9:54 pip
d----- 2022/01/14 9:54 pip-21.3.1.dist-info
d----- 2022/01/14 9:54 pkg_resources
d----- 2022/01/14 9:57 requests
d----- 2022/01/14 9:57 requests-2.27.1.dist-info
d----- 2022/01/14 9:54 setuptools
d----- 2022/01/14 9:54 setuptools-60.5.0.dist-info
d----- 2022/01/14 9:57 urllib3
d----- 2022/01/14 9:57 urllib3-1.26.8.dist-info
d----- 2022/01/14 9:54 wheel
d----- 2022/01/14 9:54 wheel-0.37.1.dist-info
d----- 2022/01/14 9:54 _distutils_hack
-a---- 2022/01/14 9:54 151 distutils-precedence.pth
参考文献
-
超軽量、超高速な配布用Python「embeddable python」
https://qiita.com/mm_sys/items/1fd3a50a930dac3db299 -
Windows 上に Python3.7 embeddable と pip をインストールする
https://bamch0h.hatenablog.com/entry/2019/09/29/162601 -
公式 3. Windows で Python を使う — Python 3.6.4 ドキュメント 4.4. 埋め込み可能なパッケージ
https://docs.python.org/ja/3/using/windows.html#the-embeddable-package