かつかれーのメモ帳

実験ノートか勉強記録

Python環境が訳わからなくならないための自分用メモ

WindowsLinux(CentOSUbuntu)でPython環境を壊さないためのメモをしておく。自分の使い方の場合、現時点ではこのやり方が一番良さそう。

まずpipについて

例えば普段pyコマンドでpythonを起動しているとする。この環境にモジュールを入れたいときは

py -m pip install numpy

のような記法が強く推奨される。pip, pip3, pip3.9など、どれがどれだかそのうちわからなくなるので。
所望のバージョンのpythonが正しく起動できている限り、これでモジュールが入れられるはず。

Windowsにインストール

Python標準のインストーラーを使ってインストール。新しいバージョンが出たら都度インストーラーを落としてきてインストールするので問題ない。
このときAdd Python 3.x to PATHすると混乱のもとになるのでしないように。
ストアアプリ版も変に競合するので入れない方が良い。
py.exeというランチャーがついてくるので、pyコマンドでpythonを起動する運用にする。バージョンは引数で選べるし、省略すれば自動的に最新のものが起動される。
今まではパスが通っていると思って使っていたモジュールたちは、以下のようにpyランチャー経由で呼べば良い。

py -m IPython
py -m jupyter lab

参考:
gammasoft.jp

Linuxにインストール

スパコンなど、自分がsudoersに入っていない場合の手順。pyenvを使うのが良い。

(WSL2 とかだと sudo できる && 必要なパッケージが揃っていないため以下をやっておく)

sudo apt update
sudo apt install build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev libreadline-dev libsqlite3-dev libopencv-dev tk-dev git

pyenvのgithubページにある通り、

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
cd ~/.pyenv && src/configure && make -C src
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
source ~/.bash_profile

すればgit cloneしかしないのでsudo aptが不要で嬉しい。なお2行目はpyenvの高速化のためのもので、コケたら別にそれはそれでいいらしい。
さらに

pyenv install 3.9.2
pyenv global 3.9.2

これでpython3.9.2がインストールされ、pythonコマンドに紐付けられる。
他に何がinstall出来るか知りたいときは

pyenv install -l

で一覧が出せる。
現在何が入っていて、そのうちどれがデフォルトなのか知りたいときは

pyenv version

すれば良い。