【Python環境構築】パッケージ管理をcondaからpipに移行した話
こんにちは。すうちです。
少し前に、自宅のPython環境を長年使ってたconda(Anaconda)からpip(PyPI)に移行しました。
この辺は他にも沢山情報ありますが、いざやり直そうと思った時に多分忘れて調べ直す可能性高いので、個人の備忘対策で書きたいと思います。
ーーー
※タイトル画像:ごるちきさん
はじめに
condaとpip
どちらもインストール管理ツールです。ソフトウェアのパッケージ管理先がcondaはAnaconda。pipはPyPIで異なります。
Anaconda環境は、最初にPythonを使う目的では最低限必要なものが揃ってて便利な反面、他のパッケージはPyPIの方が豊富なので、別途pipでインストールすることも多いです。
ただし、condaとpipのインストールが混在するとパッケージ間の依存関係に問題が出たり最悪環境が壊れることもあるので、基本的にcondaとpipは併用しないことが推奨されています(私も過去に壊れた経験あり)。
最近は、pipのインストールが増えてきたので、この機会にconda管理(Anaconda環境)を止めて、pip管理に移行しようと思ったのが経緯です。
前提条件
以下の環境で実施しました。
Anaconda環境削除
まずは、Anaconda環境の削除です。
やり方は、いくつかありますが、
今回はanaconda-cleanで削除しました。
参考サイト
(実行時のログ保存を忘れたので)引用先そのままです。
conda install anaconda-clean
anaconda-clean
Pythonとpipインストール
これまではAnacondaをインストールした時点でPythonは含まれてましたが、それらを削除したので、再度Pythonをインストールする必要があります。
こちらは単純にpython.orgからダウンロードしました。
Pythonのバージョンは目的に応じて選ぶ形になります。
最新バージョンは、他のパッケージがサポートされてない場合もあるので、今回は、少し古いPython3.8.10を入れました。
インストール手順
・ダウンロードしたpython-xxx.exeを実行
・Add Python to PATH をチェック
ちなみに、pipはPythonをインストールした時点で入ります(仮想環境を作るvenvも)。
環境構築の際、必要なパッケージやツールのインストールはPythonに紐づいたpipとvenvを使って管理します。
Python仮想環境構築(venv)
venvとは
目的により開発環境で使うパッケージ(種類やバージョン)を変えたい場合があります。venvは仮想環境を作成して、その環境毎にパッケージのインストールを分けることができます。
こちらに詳細な説明あり。
仮想環境作成
例:c:/users/.venvフォルダ下に作成
以下コマンドで、仮想環境(sample)を作成します。
python -m venv sample
仮想環境切替(activate)
sample下のScripts/activate実行(仮想環境を有効化)。
(sample) c:\users\.venv\sample\Scripts>activate
仮想環境切替(deactivate)
仮想環境を出る場合は、deactivate実行。
(sample) c:\users\.venv\sample\Scripts>deactivate
仮想環境構築(インストール)
仮想環境が有効な状態で、現在インストールされているパッケージをpip listで確認します。
(sample) c:\users\.venv\sample\Scripts>pip list
Package Version
---------- -------
pip 21.1.1
setuptools 56.0.0
WARNING: You are using pip version 21.1.1; however, version 23.1.2 is available.
You should consider upgrading via the 'c:\users\.venv\sample\scripts\python.exe -m pip install --upgrade pip' command.
pipとsetuptoolsを最新版にアップデートします。
(sample) c:\users\.venv\sample\Scripts>python -m pip install -U pip
Requirement already satisfied: pip in c:\users\.venv\sample\lib\site-packages (21.1.1)
:
Successfully installed pip-23.1.2
(sample) c:\users\.venv\sample\Scripts>python -m pip install -U setuptools
Requirement already satisfied: setuptools in c:\users\.venv\sample\lib\site-packages (56.0.0)
:
Successfully installed setuptools-67.7.2
(sample) c:\users\.venv\sample\Scripts>pip list
Package Version
---------- -------
pip 23.1.2
setuptools 67.7.2
同様に必要なパッケージをインストールします。今回は以下を入れました。
(sample) c:\users\.venv\sample\Scripts>pip install numpy
(sample) c:\users\.venv\sample\Scripts>pip install pillow
(sample) c:\users\.venv\sample\Scripts>pip install opencv-python
(sample) c:\users\.venv\sample\Scripts>pip install matplotlib
後述しますが、デバッグ用のSpyderはここではインストールせず、spyder-kernelsのみインストールします(Spyderを使う場合、spyder-kernelsは仮想環境毎に必要なようです)。
(sample) c:\users\.venv\sample\Scripts>pip install spyder-kernels
インストール結果をpip listで確認します。
(sample) c:\users\.venv\sample\Scripts>pip list
Package Version
------------------- --------
asttokens 2.2.1
backcall 0.2.0
cloudpickle 2.2.1
colorama 0.4.6
comm 0.1.3
contourpy 1.0.7
cycler 0.11.0
debugpy 1.6.7
decorator 5.1.1
executing 1.2.0
fonttools 4.39.4
importlib-metadata 6.6.0
importlib-resources 5.12.0
ipykernel 6.23.0
ipython 8.12.2
jedi 0.18.2
jupyter_client 8.2.0
jupyter_core 5.3.0
kiwisolver 1.4.4
matplotlib 3.7.1
matplotlib-inline 0.1.6
nest-asyncio 1.5.6
numpy 1.24.3
opencv-python 4.7.0.72
packaging 23.1
parso 0.8.3
pickleshare 0.7.5
Pillow 9.5.0
pip 23.1.2
platformdirs 3.5.1
prompt-toolkit 3.0.38
psutil 5.9.5
pure-eval 0.2.2
Pygments 2.15.1
pyparsing 3.0.9
python-dateutil 2.8.2
pywin32 306
pyzmq 25.0.2
setuptools 67.7.2
six 1.16.0
spyder-kernels 2.4.3
stack-data 0.6.2
tornado 6.3.2
traitlets 5.9.0
typing_extensions 4.5.0
wcwidth 0.2.6
zipp 3.15.0
Spyderインストール(オプション)
Python環境構築に必須でないですが、Anacondaを削除してデバッグ用のSpyderも消えてしまったのでインストールします。
仮想環境にpipでSpyderを入れると他で使えないので(個別に毎回インストールすればOKですが…)Spyderは共通で使えるように別の方法でインストールしたいと思います。
インストール手順
・https://www.spyder-ide.org/でダウンロードを選択
・Spyder_xxx.exeを実行
Spyder設定
以下のように、インタプリタ設定で仮想環境のPythonを選択しました。
動作確認のため、Spyderを起動して以下コードを実行。
test_pkg.py
import numpy as np
import PIL
import cv2
import matplotlib
print('Numpy:', np.__version__)
print('Pillow:',PIL.__version__)
print('opencv:',cv2.__version__)
print('matplotlib:',matplotlib.__version__)
実行結果
インストールしたパッケージのバージョンを確認。
最後に
久々に、技術寄りの投稿でした…笑
なんでpipとかcondaとか似たものが複数あるのか疑問に思うかもしれませんが、ITの世界ではよくある話です。
今回の様にほぼ同じに見えても管理範囲が微妙に違ったり、目的に応じて開発が分岐していく等が背景にあります。
これからpip管理でPython環境を構築したい方(未来の自分も含む)など、何か参考になれば幸いです。
最後まで読んで頂き、ありがとうございました。
--
Kindle Unlimited 会員の方は無料で読めます。