Windows 上に Python3.7 embeddable と pip をインストールする

なんか、普通にダウンロードしてきて pip をインストールするだけだとうまく動かなかった。

具体的には .\Scripts\pip.exe -V を実行すると以下のエラーが発生して pip が使えない。

Traceback (most recent call last):
  File "D:\obj\windows-release\37win32_Release\msi_python\zip_win32\runpy.py", line 193, in _run_module_as_main
  File "D:\obj\windows-release\37win32_Release\msi_python\zip_win32\runpy.py", line 85, in _run_code
  File "C:\dev\python374\Scripts\pip.exe\__main__.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip'

なので、色々調べて試してみた結果を残しておく。

基本的には、以下のURLに記載されていることを実行すればうまくいくようだった。

超軽量、超高速な配布用Python「embeddable python」 - Qiita

ただ、3.6環境なので、3.7環境でも同じかどうか試してみたいと思う。

今回は自身のPCにすでにPython3.7を入れてしまっていたので、Dockerを使って環境を構築する。

Docker上でWindowsコンテナを作成するやり方は以下の記事を参考にすること

DockerでWindowsコンテナを起動する為に必要な設定 - bamch0h’s diary

今回は powershell を使う、 cmd だと Webからファイルをダウンロードしたり、zipファイルを解凍したりすることを

コマンドライン上からするのは難しそうだったので、 powershell を使うことにした。

Vim のインストール

後でファイルを編集しないといけないのでVimをインストールする。 netupvim 便利。

PS C:\dev> wget https://github.com/koron/netupvim/releases/download/v1.4.1/netupvim-v1.4.1.zip -o netupvim.zip
PS C:\dev> Expand-Archive -Path .\netupvim.zip -DestinationPath vim
PS C:\dev> cd vim
PS C:\dev\vim> .\netupvim.exe
PS C:\dev\vim> $Env:Path += ";C:\dev\vim"

Python のインストール

PS C:\dev> wget https://www.python.org/ftp/python/3.7.4/python-3.7.4-embed-win32.zip -o python374.zip
PS C:\dev> Expand-Archive -Path .\python374.zip -DestinationPath python374

python37._pth の編集

PS C:\dev> cd .\python374\
PS C:\dev\python374> vim .\python37._pth

以下のように編集。最下行の #import siteコメントアウトを解除するだけ。

python37.zip
.

# Uncomment to run site.main() automatically
import site

pip の編集

PS C:\dev\python374> wget "https://bootstrap.pypa.io/get-pip.py" -O "get-pip.py"
PS C:\dev\python374> .\python.exe get-pip.py

pip が使えるかのチェック

PS C:\dev\python374> .\python.exe -m pip install numpy

最後に Successfully installed numpy-1.17.2 のような表示がでていれば pip が動いてる。

まとめ

  • Windows 10 で python-embeddable を使って pip を使うには python37._pth の編集が必要。

  • 3.6で発生していた問題は3.7でも発生するようなので注意。