Python環境構築 2023.10

概要

  • Pyenv:複数バージョンのPythonの管理する.
  • poetry:各解析や開発のための個別の仮想環境を管理する.
  • OSはmacOS, Linuxを想定している.Windowsの場合はWSL2でLinux環境を用意して利用する.

Pythonの環境を構築する方法は他にも選択肢がある.ニーズや好みに合わせて選択してほしい.

インストール

homebrewでインストールする.

1
brew install pyenv poetry

Pyenv

複数のバージョンのPythonを切り替えて使いたい場合は多い.

そうした際には複数のPython環境を導入し,自身でパスを設定しても良いが面倒である.

そこで通常はPyenvのような複数のPython環境のインストールや切り替えを支援するツールを利用することになる.

依存ライブラリのインストール

公式ドキュメントに従い,自身の環境に合わせて必要なライブラリをインストールしておく.

Suggested build environment

Pythonのインストール

いくつかのPython環境をインストールしてみよう. 以下では3.11.63.12.0をインストールしているが,使いたいバージョンを設定してほしい.

1
2
3
4
5
# インストールできるPython環境の一覧を確認
pyenv install -l

# 3.11.6と3.12.0をインストール
pyenv install 3.11.6 3.12.0

バージョンの切り替え

インストールしたPythonをそれぞれ使ってみよう.

以下では3.11.6XXXというディレクトリ内で, 3.12.0YYYというディレクトリ内でそれぞれ利用することを想定している (別バージョンのPythonを別のプロジェクトで使うイメージ).

1
2
3
4
5
6
7
8
9
# 特定ディレクトリ内で3.11.6を使う
cd XXX
pyenv local 3.11.6
python --version

# 特定ディレクトリ内で3.12.0を使う
cd YYY
pyenv local 3.12.0
python --version

一度,pyenv localコマンドを実行すれば,以降はそのディレクトリ内に移動すれば自動で設定したバージョンが利用される.

1
2
3
# 3.11.6が利用される
cd XXX
python --version

これはpyenv localコマンドの実行時に.python-versionという隠しファイルがディレクトリ内に作成され, そこに設定したバージョンが記載されているためである.

1
cat .python-version

おまけ

いくつか使うかもしれない機能やTipsを紹介する. 最初はとりあえず無視してもらって良い.

pyenv global

特定のディレクトリ内だけでなく,デフォルトで使いたいバージョンを指定することもできる. pyenv globalコマンドを使う.

1
pyenv global XXX

XXXは設定したいバージョン.

ディレクトリ内に.python-versionファイルがある場合は,そちらが優先される.

複数バージョンの指定

pyenv localpyenv globalでは複数のバージョンを指定することもできる.

例えば3.10.13miniconda3-latestをグローバルに使うPythonとして設定する場合は以下のようにする.

1
pyenv global 3.10.13 miniconda3-latest

miniconda3-latestでシェル起動時に自動的にbase環境に入らないようにする

1
2
# 仮想環境外に出て(conda deactivate)以下を実行
conda config --set auto_activate_base False

Poetry

プロジェクト毎に使いたいパッケージやそのバージョンは通常異なる.

こうした場合には,他のプロジェクトなどに影響を受けないように切り離されたPython環境(仮想環境)を構築することが一般的である.

例えば,標準ライブラリではvenvが提供されており, 異なる解析環境・開発環境を作成することができる.

Poetryは依存管理からパッケージング(Pythonパッケージを開発して配布可能な形式にまとめる)までを支援するツールである.

ここでは,Poetryを使って各解析や開発のための個別の仮想環境を管理する.

Authorの設定

デフォルトでは,.gitconfiguser情報から名前とメールアドレスを取得してくる. 何も設定していない場合は,必須項目になる.

poetry/src/poetry/console/commands/init.py

ここでは.gitconfigに設定をおこなっておこう.

1
2
git config --global user.name "XXX XXX"
git config --global user.email xxx@example.com

XXX XXXxxx@example.comは自身の情報を入力する.

プロジェクトの作成

特定のディレクトリ以下を(同じ仮想環境を使う)一つのプロジェクトとする.

1
2
3
# プロジェクトの作成
cd XXX
poetry init

設定項目についての質問が表示されるので入力していこう.

デフォルトのままで良ければ空欄で良い.

ここではPythonのバージョンだけ3.9以上3.13未満としている.

Poetryにおける(Pythonやパッケージの)バージョン指定方法は公式ドキュメントのDependency specificationを参照してほしい.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
This command will guide you through creating your pyproject.toml config.

Package name [XXX]:  
Version [0.1.0]:  
Description []:  
Author [NAME <MAIL>, n to skip]:  
License []:  
Compatible Python versions [^3.11]: >=3.9,<3.13

Would you like to define your main dependencies interactively? (yes/no) [yes] no
Would you like to define your development dependencies interactively? (yes/no) [yes] no
Generated file

ディレクトリ内に,pyproject.tomlという設定ファイルが生成される.

依存パッケージのインストール

プロジェクト内で使うパッケージをインストールしていく.

以下では,NumPy, SciPy, pandas, matplotlib, JupyterLabをインストールしているが,自身のプロジェクトに必要なものを導入しよう.

1
poetry add numpy scipy pandas matplotlib jupyterlab

これらのパッケージの情報もpyproject.tomlに記載される.

1
cat pyproject.toml

poetry run

Poetryで作成した仮想環境は自動ではactivateされない.

Poetryで作成した仮想環境上でコマンドを実行したい場合はpoetry runを使う.

1
poetry run jupyter lab

poetry shell

Poetryで作成した仮想環境内でシェルを立ち上げる場合はpoetry shellを使う.

1
poetry shell

仮想環境内に導入したパッケージなどを利用できる.

1
jupyter lab

仮想環境でのPythonバージョンの変更

poetry env useにより仮想環境を切り替えることができる.

例えば,異なるバージョンを利用することが可能.

1
poetry env use 3.12

仮想環境の一覧はpoetry env listで確認できる.

1
poetry env list