TECHNOLOGY

WindowsのPython開発環境構築:インストールから仮想環境、Dockerの活用まで

pythonのプログラムを携帯で見ている絵

本記事では、WindowsでPythonを使用するための環境構築の手順について説明します。

具体的には、Pythonのインストール、パッケージ管理方法から始まり、仮想環境の使用、Dockerのイメージ作成、Docker上でのプログラムの簡単な実行例を紹介します。

目次

  1. Pythonのインストール
    1. インストーラのダウンロード
    2. 通常版のインストール
    3. 軽量版のインストール
    4. 旧バージョン(ver 2.7.18)のインストール
    5. 環境変数PATHの修正
    6. 複数バージョンの共存
  2. パッケージ管理ツール
    1. pip installコマンド
    2. pip uninstallコマンド
    3. pip freezeコマンド
    4. pip listコマンド
  3. 仮想環境の作成と活用
    1. 仮想環境の概要と利点
    2. 仮想環境の作成
    3. 仮想環境の有効化
    4. 仮想環境の無効化
  4. Dockerの活用
    1. Dockerのインストール
    2. WSLのインストール
    3. Dockerの起動
    4. Dockerインストールの確認
    5. Dockerイメージの作成
    6. Dockerコンテナの起動
  5. まとめ

Pythonのインストール

インストーラのダウンロード

公式ホームページからダウンロードします。

メニューの中の「Downloads」を選択します。最新版をダウンロードする場合にはDownload for Windowsの下にあるボタンを押します。

インストールするバージョンを選択したい場合には、メニュー「Downloads」の中の「Windows」をクリックします。

Python公式ページで「Downloads」>「Windows」のメニューを選択している画像

「Windows」をクリックした場合には、「Python Release for Windows」というページに進み、Windows用にリリースされている各バージョンのインストーラが配布されていますので、必要なバージョンのインストーラをダウンロードします。

Windows用にリリースされている各バージョンのインストーラーへのリンクがあるページの画像

配布形式には「Windows installer」と「Windows embeddable package」があります。

種類内容
Windows installer一般的なWindowsのインストーラになります。
ダイアログウィンドウの指示に従ってボタンをクリックしていくことでインストールします。
Windows embeddable package軽量版のPythonの実行環境であり、zipファイルにより配布されています。
zipファイルを圧縮・解凍ソフトで解凍してから使用します。

Pythonのバージョンについては、Python2とPython3は完全な互換性がありませんので、最新版のPython3の他にPython2.7.18をダウンロードしておくのもおすすめです。

Python2は2020年1月1日にサポートを終了しました。このため、新しく作るときはPython3が推奨です。しかし、現在でも古いコードではPython2が使用されていることがあります。

通常版のインストール

「Windows installer」から、ダウンロードしたファイルをダブルクリックして実行します。

インストール時には、「Add Python to PATH」のチェックボックスにチェックを入れてから、「Install Now」をクリックします。

「Add Python to PATH」のオプションをチェックすることで、コマンドプロンプトやPowershellから直接Pythonを実行できるようになります。

ご自身でPATHを管理している場合はこのチェックをつける必要はありません。

正しくインストールされたかどうかを確認するには、コマンドプロンプトやPowershellを開いて、次のコマンドを実行します。

py.exe --version

コマンドの結果、バージョン情報が表示されたらインストールが成功しています。うまくいかなかった場合には、インストール時に「Add Python to PATH」にチェックをつけて再度インストールしなおすか、パソコンに詳しい方は環境変数を修正して、Pythonの実行体があるフォルダにPATHを通してください。

公式ホームページのインストーラからインストールした場合には、コマンドは「python.exe」ではなく、上記のように「py.exe」になります。

軽量版のインストール

公式ホームページより「Windows embeddable package」をダウンロードした場合、Pythonを実行するのに必要な最低限のファイルがすべてこのzipファイルに含まれています。

そして、zipファイルを解凍するだけで、その中のpython.exeからpythonを実行できます。

このパッケージはインストールの必要がなく、レジストリの変更や環境変数の変更などもありません。パソコンの環境を汚したくない場合はこちらを使用する選択もあります。

最低限の機能しか入っていませんので、pythonパッケージをインストールするpipコマンドなども自分でインストールする必要があります。

pipコマンドのインストールは、

https://bootstrap.pypa.io/get-pip.py

からファイルget-pip.pyをダウンロードし、zipファイルを解凍したフォルダの中に配置します。次に解凍したフォルダの中にある拡張子が._pthのファイル(記事執筆時はpython311._pth)を修正します。「# import site」というコメントアウトされた行がありますので#を削除して、コメントアウトを解除します。

python311.zip
.

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

そして、コマンドプロンプト上でcdコマンドを用いて、get-pip.pyを配置したフォルダに移動し、以下のコマンドを実行することでpipをインストールできます。

.\python.exe .\get-pip.py

以下のような結果が出力されます。

Successfully installed pip-23.1.2 setuptools-68.0.0 wheel-0.40.0

インストールされたpipコマンドなどの実行体はScriptフォルダの中に作成されます。Scriptフォルダに移動して、次のコマンドを実行することでpipコマンドのバージョン情報が表示されたら、インストールが成功しています。

cd .\Script
.\pip.exe -V
pip 23.2 from D:\python-3.11.4-embed-amd64\Lib\site-packages\pip (python 3.11)

次のエラーが発生した場合には、拡張子が._pthのファイルの修正がうまくいっていません。get-pip.pyを実行するよりも前に、修正を行う必要がありますのでご注意ください。

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "D:\python-3.11.4-embed-amd64\Scripts\pip.exe\__main__.py", line 4, in <module>
ModuleNotFoundError: No module named 'pip'

軽量版はパッケージをインストールするときにパッケージの依存関係でハマることが多いので、詳しくない方は通常版をインストールして仮想環境を使用することを推奨します。

旧バージョン(ver 2.7.18)のインストール

Python2.7.18のインストーラをダウンロードした場合は、自動的に環境変数PATHを設定してくれる「Add Python to PATH」のチェックボックスはありません。

インストーラを実行して表示されたダイアログウィンドウの指示に従ってPython2.7.18をインストールした後、必要に応じて自分で環境変数を修正します。

Python2.7.18をコマンドプロンプトやPowershellから実行するには、2つの方法があります。1つは、インストールされたフォルダ(defulatではC:\Python27\)にあるpython.exeを絶対パスで指定します。

C:\Python27\python.exe 

もう1つの方法は、Windowsの環境変数PATHにPythonをインストールしたフォルダを追加します。

この方法を用いた場合には、次のように直接実行できます。

python.exe 

環境変数PATHの修正

PATHの追加は、Windowsのスタートボタンの横にある検索ウィンドウで「システムの詳細設定の表示」を検索して「システムのプロパティ」ウィンドウを表示します。

そして、右下にある環境変数ボタンを押します。

システムのプロパティウィンドウにおける環境変数ボタンの画像

そうすると「環境変数」というタイトルのダイアログウィンドウが現れます。自分しか使用しないのであれば「〇〇のユーザー環境変数」、そうでない場合は「システム環境変数」の変数「Path」を選択します。

その状態で「編集」ボタンをクリックします。すると、表示されたウィンドウに現在追加されているパスの一覧が表示されますので、新たにPATHに追加するフォルダの場所を、その一覧の下に絶対パスで追加します。

複数バージョンの共存

Pythonのバージョンを複数インストールしている場合には、各バージョンのPython.exeに対してシンボリックリンクを作成し、そのリンクの名前にPython2.7.exe とバージョンを入れると便利です。

そして、プログラムのシンボリックシンクは1つのフォルダにまとめておいて、そのフォルダを環境変数PATHに追加すると、PC環境が汚れません。

このようにすると、どの作業フォルダにいても

Python2.7.exe

のようにバージョンを入れたシンボリックリンクの名前を書き込むことで、そのバージョンのPythonを実行できるようにできます。

関連記事
パソコンの画像
Windows のシンボリックリンクの作成方法と使用例

Windowsのシンボリックリンクの作成方法、他のリンク方法(ショートカットやジャンクション)との比較、シンボリックリンクの応用例について説明します。

続きを見る

パッケージ管理ツール

Pythonには、pipというパッケージ管理ツールが含まれており、これを利用してPythonのライブラリやフレームワークをインストールします。

pip installコマンド

最新のライブラリをインストールする方法は、コマンドプロンプトやPowershell上において、次のコマンドを実行します。

pip install パッケージ名

インストールするパッケージのバージョンを指定する場合には、次のコマンドを実行します。

pip install パッケージ名==x.y.z
pip install パッケージ名>=x.y.z

==の場合はバージョンx.y.zをインストールし、>=の場合はバージョンx.y.zを下限としてパッケージをインストールします。例えば、パッケージnumpyのバージョン1.25.1をインストールするときは、

pip install numpy==1.25.1

とします。すでにインストールしているパッケージをアップデートする場合は、次のコマンドを実行します。

pip install -U パッケージ名

インストールしたいパッケージをテキストファイルに書き出している場合には、次のコマンドを実行することで、ファイルに記載されたライブラリをすべてインストールできます。

pip install -r テキストファイル名

テキストファイルは次の形式で記入します。

numpy==1.25.1
pandas==2.0.3
...

pip freezeコマンドで、インストールしているパッケージ一覧をテキストファイルに出力して、このコマンドを適用することで、Pythonコードを動かしている環境を別のPCに移植することができます。

pip uninstallコマンド

インストールされたパッケージを個別に削除する場合には、次のコマンドを実行します。

pip uninstall パッケージ名

また、削除したいパッケージをテキストファイルに書き出している場合には、それをすべて削除することもできます。

pip uninstall -r テキストファイル名

テキストファイルの書き方は、pip install -r を用いる場合と同じです。pip freezeコマンドで、インストールしているパッケージ一覧をテキストファイルに出力して、このコマンドを適用することで、インストールしているパッケージをすべてアンインストールできます。

pip freezeコマンド

pip installやpip uninstallで読み込みできる形式で、インストールしているパッケージの一覧を表示するコマンドで、以下のようにリダイレクトによりテキストファイルに書き出すことができます。

pip freeze > requirements.txt

ここでは、書き出すテキストファイルの名前をrequirements.txtとしていますが、任意の名前を使用できます。

pip listコマンド

インストールしているパッケージの一覧を表示するコマンドです。

pip list
pip list --outdated
pip list --uptodate

このコマンドは人が画面で確認しやすいように整えて表示します。このため、pip installやpip uninstallからの読み込みには使用できない点がpip freezeとは異なります。

オプション--outdatedをつけることで、最新版でないものは最新版のバージョンを確認できます。

Package    Version Latest Type
---------- ------- ------ -----
setuptools 65.5.0  68.0.0 wheel

逆に最新版のものだけを確認したい場合には、オプション--uptodateを使用します。

仮想環境の作成と活用

仮想環境の概要と利点

Pythonのプロジェクトごとに異なるライブラリやバージョンを管理したい場合には、仮想環境を利用すると便利です。仮想環境を使用しない場合と使用した場合の違いを以下の図に示します。

仮想環境使用前は、システムにインストールされたライブラリをすべてのプロジェクトが参照するが、プロジェクトごとに仮想環境を用意すると、仮想環境ごとにライブラリがインストールされ、お互いの仮想環境は独立している。

仮想環境を使用せずにパッケージをpipによりインストールすると、そのライブラリはすべてのプロジェクトで共通に使用されます。システムにインストールできるパッケージのバージョンは1つのため、プロジェクト間で使いたいライブラリのバージョンが異なるときは問題が発生します。

一方、仮想環境を作成すると、ライブラリが何もインストールされていない空の箱を用意することができ、そこに必要なライブラリとバージョンを選択して一からインストールしなおすことができます。そして、各仮想環境は独立しており、他の仮想環境上にあるライブラリの影響を受けません。仮想環境を使用するメリットを以下にまとめました。

項目メリット
プロジェクトごとの環境の独立各プロジェクトは独自の環境をもち、互いに干渉しません。
これにより、プロジェクト間でライブラリのバージョンが衝突することがありません。
ライブラリのバージョン管理プロジェクトごとに異なるバージョンのライブラリを使用することができます。
これにより、特定のライブラリの特定のバージョンが必要なプロジェクトを簡単に開発できます。
システムのPython環境を汚染しない仮想環境はシステム全体のPython環境とは隔離されているため、システムのPython環境やほかのプロジェクトに影響を与えることなく、
ライブラリを追加、更新、削除することができます。
再現性と移植性仮想環境は必要なすべての依存関係を含むため、コードの再現性と移植性を向上させます。
つまり、別のコンピュータやほかの人とプログラムを共有しやすくなります。
バージョンアップのテスト新しいライブラリのバージョンをテストする場合、仮想環境を使用すると、システム全体のPython環境を変えることなく新しいバージョンを試せます。

仮想環境の作成

仮想環境を作成するには、まずコマンドラインやPowershellでプロジェクトのディレクトリに移動します。そして、次のコマンドを実行します。

py.exe -m venv 環境名

環境名には任意の名前を入れます。これにより、指定した名前のディレクトリが作成され、その中に仮想環境が作成されます。このときに使用したpy.exeのバージョンが仮想環境内でのPythonのバージョンになります。

仮想環境の有効化

仮想環境を有効化するには、ディレクトリ「環境名\Scripts\」にあるactivateコマンドを実行します。

.\環境名\Scripts\activate

これにより、そのコマンドラインまたはPowershell上で実行するPythonやpipは、仮想環境内で実行されるようになります。つまり、仮想環境が有効化された状態で、pip installコマンドを実行すると、そのパッケージは仮想環境内にインストールされます。

Powershell上では、仮想環境が有効化されると仮想環境名がコマンドラインの最初の部分に表示されます。

(myenv) PS D:\User\Desktop\Python_test>

ここでは、環境名をmyenvとしています。

仮想環境の無効化

仮想環境を無効化するには、次のコマンドを実行します。

deactivate

deactivateコマンドを実行した後は、pythonやpipは再びシステム上で実行されるようになります。

Dockerの活用

仮想環境は、パソコンのOSの上に作られるもので、特定の種類のアイテム(ライブラリやPython)を管理するために使用されますが、Dockerではアイテムだけではなく、そのアイテムを使うのに必要なすべての環境(オペレーションシステム、システムライブラリ、ミドルウェアなど)を含めて1つのパッケージにまとめて管理できます。このOSレベルで仮想化するというところがPythonの仮想環境と異なる最も大きな点で、仮想環境よりも移植性が格段に向上します。ここでは、OSがWindows 11 HOMEである場合を例として、DokerのインストールからPythonのイメージの作成までを行います。

Dockerのインストール

公式ページよりWindows用のインストーラをダウンロードします。

ダウンロードしたインストーラを実行し、ダイアログウィンドウの指示に従ってインストールします。インストールに必要な要件は、以下に記載されております。

https://docs.docker.com/desktop/install/windows-install/

WSLのインストール

Docker Desktopを起動するには、WSL(Windows Subsystem For Linux)のWSL2をインストールする必要があります。

インストール方法については、次の記事をご参照ください。

WindowsのマークとLinuxのペンギンが一緒にのった絵。WSLはWindowsからLinuxを扱うことのできるツールなので、それを表した。
WSL(Windows Subsystem for Linux)インストールからファイル操作、プログラムの実行まで

WSLを利用することで、Windowsコンピュータ上でLinuxを利用することが可能になります。本記事では、WSLのインストール方法からファイル操作までを解説し、異なるOS間でのプログラムの実行とファイルアクセスが非常に簡単できることを示します。

続きを見る

Dockerの起動

Docker Desktopを起動します。Windowsのスタートメニューから「Docker Desktop」を選択して実行します。

Dockerインストールの確認

Dockerを起動した状態で、Powershell上において以下のコマンドを実行します。

docker run hello-world

インストールがうまくいっている場合には、次の結果が出力されます。

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Dockerイメージの作成

例として、次のコードについてDockerイメージを作成します。このコードhello.pyは、画面に「Hello, World」と標準出力します。

print("Hello, World")

まず、Dockerfileという名前のファイルを作成します。このファイルにはDockerコンテナ(つまり、この記事ではPythonの環境)の作成方法を記述します。

# 基となるイメージを指定
FROM python:3
# 作業ディレクトリの設定(設定したディレクトリがない場合は新規作成する)
WORKDIR /app
# 必要なファイル(hello.py)をコンテナにコピー
COPY . /app
# ライブラリをインストールする場合はコメントアウト
# RUN pip install --no-cache-dir -r requirements.txt

# コンテナが起動したときにデフォルトで実行するコマンドを指定
CMD ["python", "hello.py"]

今回のPythonファイルはライブラリを読み込む必要がありませんが、通常はrequirements.txtなどに必要なライブラリを書いておきます。#でコメントアウトしている行が、必要なパッケージをrequirements.txtから読み込み、インストールする行になります。

次に、DockerfileからDockerイメージを作成します。

docker build -t hello .

オプション -t の後には作成するイメージの名前を任意に記述します(ここではhelloとしました)。そして、その後に作成したDockerfileが配置されている場所を指定します(この例ではDockerfileとhello.pyを同じフォルダに置いて、そのフォルダ上でコマンドを実行します)。

これにより、helloという名前のDockerイメージが作成されます。以下のコマンドを実行することで、作成されたイメージを確認できます。

docker images

結果は、次のようになります。

REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
hello        latest    ba74b4f4ab73   6 minutes ago   1.01GB

Dockerコンテナの起動

最後にDockerイメージからDockerコンテナを起動します。以下のコマンドを実行します。

docker run -it hello

これにより、hello.pyがコンテナ上で実行され、画面に「Hello, World」が表示されます。

PS D:\User\Desktop\Python_test> docker run -it hello
Hello, World

まとめ

Windows上でのPython環境を構築する方法として、Pythonのインストール方法、pipコマンドによるパッケージ管理方法、仮想環境およびDockerの活用方法について説明しました。

仮想環境やDockerを用いるとパソコンを汚さずにPythonを使用でき、ライブラリの管理やソースコードの共有も楽になりますので、ぜひご活用ください。

-TECHNOLOGY
-,