🐍

[初心者向け]クリーンなPython環境の構築方法

2024/12/11に公開

<< 前:Oracle Cloud Infrastructure (OCI) のインスタンス上に SoftEther VPN Server を建てる by NXVZBGBFBEN
>> 後(2日後):学生向けFixstars高速化コンテスト2024参加記 by kogetsu0728

木更津高専 Advent Calendar 2024 11日目担当のこかすた〜です。

はじめに

まともに習ってないプログラミング言語(Python)を突然授業やテストで使いだす、そんなクレイジーな授業が木更津高専には存在します。
ググればたくさん情報があるので調べれば良いのですが、それらに従うと以下のような問題点に遭遇する場合が多いです。

  • Windowsのパス通す作業めんどくせ~~
  • モジュールをグローバルにインストールしてしまい環境がごちゃごちゃに!!

前者に関してはMicrosoft Store版も最近は用意されているためまだいいとして、後者は問題になりがちです(しかも気が付かないうちに)。この後授業で共同開発をするっぽいので、そんなバラバラな環境でやると、多分大変なことになります。
そこで、この記事では例によってWSL+VSCodeでのPython環境を用意したうえで、venvを使ってクリーンな環境構築を行う方法を解説します。

クリーンな環境について解説

とりあえず導入して使えるようになればいいんだよ!って人は、次の「Pythonの導入」まで飛んでください。

ここでは、先ほど説明した「モジュールをグローバルにインストールしてしまい環境がごちゃごちゃに!!」について解説します。

モジュールとは?

モジュールとは、その名の通り部品みたいなものです。Python標準のモジュールは標準部品、pip等のツールを使って追加で導入するものが拡張部品のようなイメージです。C言語で言うincludeで追加するヘッダのような感じだと思ってくれれば話が速いです。
例えば、Pythonのモジュールで有名なものにNumpyというものがあります。これは、通常のPythonの計算機能よりも高速に計算を行ったり、高度な計算を行うことができます。例えば、行列AとB、またAとBの積である行列ABがあります。

A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix}, \quad AB = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix}

AとBからABを求めたいと思ったとき、普通は行列の積を自分で実装しなければいけないかもしれません。しかし、Numpyを使えば、

#numpyのインポート
import numpy as np

#numpy独自の配列を作成
A = np.array(([1, 2],[3, 4]))
B = np.array(([5, 6],[7, 8]))

#[[19 22]
# [43 50]]
AB = A @ B
print(AB)

このプログラムを書くことで、計算ができます。
このように、Pythonのモジュールは便利な機能を追加できるのです。Pythonが人気である大きな理由の1つに、そのモジュールの豊富さがあるのは間違いないでしょう。

モジュールのグローバルインストールと仮想環境

モジュールの役割についてはなんとなく理解してもらえたと思います。では、そのモジュールはどのように入手するのでしょう?
当然すべてのモジュールが最初から入っているわけではないので、自分で追加導入します。pipと呼ばれるツールを使って入れることが多く、Numpyの場合は

pip install numpy

でインストールします(※今はやらない)。UbuntuやDebian等を使ってる方はapt install ○○と同じようなイメージです。これを実行することでPCにモジュールがインストールされます。

さて、ここで1つ大事なポイントとして、このときのモジュールはPCにインストールされます(=グローバルインストール)。そのため、PC内でライブラリは1つのバージョンのみ存在するわけです。
では、もし「プロジェクトAはライブラリXのv1.0でないと動作しない」「プロジェクトBはライブラリXのv1.5以降でないと動作しない」という状況になったらどうすればよいのでしょう。
PCを2台用意するんでしょうか?
このように、グローバルインストールを行うと、依存関係の整理が大変です。更に、異なるPythonのバージョンが必要になったら...

ここで役に立つのが仮想環境です。プロジェクトごとに異なるモジュールのバージョンやPythonのバージョンを使えるようになります。プロジェクトごとにモジュールの状態が独立されているので、プロジェクトごとに必要なモジュールだけをインストールできます。
また、PC本体にモジュールをインストールしないため、本体のPython環境がごちゃごちゃすることなくクリーンな環境に保てます。これが、仮想環境のメリットです。

というわけで、今回はPythonを導入するだけではなく、仮想環境の利用方法も紹介して、クリーンな環境にすることを目指します。

Pythonの導入

ここでは、Pythonを導入します。

Ubuntu & VSCodeのインストール

VSCode & WSLの環境を用意する方法は、こちらの記事の以下の章を進めてください(既に完了している方は改めてやる必要はありません)。

  • Ubuntuのセットアップ
  • Visual Studio Codeのインストール

ただし、「Visual Studio Codeのインストール」で「C/C++」「C/C++ Theme」をインストールしていますが、これを「Python」「Python Debugger」の2つに置き換えて読んでください。
すでにVS CodeとWSLを導入済みの場合でも、これをインストールしてない場合があるので、忘れずやっておいてください。
img.png

Pythonをインストールする

次に、Pythonをインストールします。
WSLのターミナル上、あるいはWSLに接続したVSCodeでCtlr+Shift+@を押して表示されるターミナル上で、以下のコマンドを実行してください。

sudo apt update
sudo apt install python3
sudo apt install python3-pip
sudo apt install python3-venv
なぜ、Python3は名前に3をつけているのか?

これは、Python2.xと3.xの混同を避けるためです。
Python3.xは2.xの後継ではありますが、3.0で多くのの破壊的変更があったため、引き続き2.x系も3.xとは別に保守されてきた経緯があります。
なお、Python 2.x系は2020年にサポート終了となっており、現在使われることは少なくなっています。モジュールの関係で使う場合はあるようですが。

完了後、python3を実行して

kokastar@koka-Zenbook:~$ python3
Python 3.10.12 (main, Nov  6 2024, 20:22:13) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

のようにバージョン名が表示されたら成功です。Pythonのインタプリタモードに入っているので、exit()と入力してエンターを押すことで抜けられます。

コードを実行できるようにする

完了したら、Ctrl+n → Ctrl+sを押してください(Ctrl+nでファイルを新規作成し、Ctrl+sで保存しています)。
すると、以下のような表示が画面上に出てくると思います。
img.png

Linuxのホームディレクトリが表示されてるので、好きなフォルダを選択して、ファイルを保存します。名前を「○○.py」のように.pyで終わらせることで、Pythonだと認識されます。
このように。
img.png

そして、コードを書きます。とりあえずHello World書きましょう。

print("Hello World")

そして、Ctrl+F5を押すと、初回に限り上に「インタプリタの選択」のようなものが出てくると思います。Python Debuggerを選択すると、実行されます。

kokastar@koka-Zenbook:~$  /usr/bin/env /bin/python3 /home/kokastar/.vscode-server/extensions/ms-python.debugpy-2024.12.0/bundled/libs/debugpy/adapter/../../debugpy/launcher 58571 -- /home/kokastar/hogehoge.py 
Hello World

これで、とりあえずPythonを実行できるようになりました。

venvの使い方

ここからは、仮想環境を使用するためのvenvの使い方を解説します。

導入

仮想環境は1つのファイルであってもプロジェクト単位で管理することになります。そのため、それ用に1つディレクトリを用意しておいてください。
今回は例なので、hogeディレクトリの中にmain.pyを作成してあったとします。

mkdir hoge
cd hoge
touch main.py

VS Codeの左上「ファイル」→「フォルダーを開く」からプロジェクトのフォルダを開いてください。また、編集したいファイルを開いておいてください(左上のエクスプローラータブからファイル一覧を開けます。)。
次に、ターミナルが開いてない場合はCtlr+Shift+@を押してターミナルを開き、以下のコマンドを実行して有効化します。

python3 -m venv venv

後ろのvenvの部分は仮想環境の名前です。特にこだわる理由もないので、venvにすることが多いようです。
実行すると、しばらくして完了します。venvという名前のディレクトリができてると思います。

kokastar@koka-Zenbook:~/hoge$ python3 -m venv venv
kokastar@koka-Zenbook:~/hoge$ ls
main.py  venv

仮想環境の有効化

このコマンドを使うと、仮想環境が有効になります。

source venv/bin/activate

実行すると、

(venv) kokastar@koka-Zenbook:~$ 

のように仮想環境名が先頭に出てくると思います。
これで、仮想環境の導入と有効は終わりです。なお、以下のコマンドで仮想環境から抜けられます。

(venv) kokastar@koka-Zenbook:~$ deactivate
kokastar@koka-Zenbook:~$ 

numpyでテストしてみる

最後に、仮想環境にnumpyを入れる方法を紹介します。

仮想環境の有無に関係なく、pipを使う場合はモジュールのインストール方法は同じです。
今回は仮想環境に入れるので、仮想環境を有効にしていることを確認した上で、

(venv) kokastar@koka-Zenbook:~$ pip install numpy

を実行します。すると、numpyをインストールしてくれます。

先ほど作成したmain.pyに以下のプログラムを書きましょう。

main.py
#numpyのインポート
import numpy as np

#numpy独自の配列を作成
A = np.array(([1, 2],[3, 4]))
B = np.array(([5, 6],[7, 8]))

AB = A @ B
print(AB)

次に、右下の「3.x.x」の部分をクリックします。数字は環境によって変わります。
img.png
これを押すと上に一覧が出てくるので、venvをクリックします。
img.png

これで、実行するPythonのインタプリタを仮想環境のものに切り替えられます。1回やれば基本的にそれ以降は不要です。
で、先ほど同様Ctrl+F5を押して実行します。

[[19 22]
 [43 50]]

これで成功です。やったね。

最後に

Pythonは素晴らしい言語です。もちろん様々な批判はありますが、とにかく便利な言語であることは間違いないです。適材適所ってやつだと思います。
クリーンな環境で、良きPythonライフを!

GitHubで編集を提案

Discussion