LoginSignup
3
4

More than 1 year has passed since last update.

Windows10で埋め込みPythonパッケージ(Python Embedded distribution)の作成

Last updated at Posted at 2022-01-14

はじめに

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

参考文献

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4