見出し画像

【Python環境構築】パッケージ管理をcondaからpipに移行した話

こんにちは。すうちです。

少し前に、自宅のPython環境を長年使ってたconda(Anaconda)からpip(PyPI)に移行しました。

この辺は他にも沢山情報ありますが、いざやり直そうと思った時に多分忘れて調べ直す可能性高いので、個人の備忘対策で書きたいと思います。

ーーー
※タイトル画像:ごるちきさん



はじめに

condaとpip

どちらもインストール管理ツールです。ソフトウェアのパッケージ管理先がcondaAnacondapipPyPIで異なります。

Anaconda環境は、最初にPythonを使う目的では最低限必要なものが揃ってて便利な反面、他のパッケージはPyPIの方が豊富なので、別途pipでインストールすることも多いです。

ただし、condaとpipのインストールが混在するとパッケージ間の依存関係に問題が出たり最悪環境が壊れることもあるので、基本的にcondaとpipは併用しないことが推奨されています(私も過去に壊れた経験あり)。

最近は、pipのインストールが増えてきたので、この機会にconda管理(Anaconda環境)を止めて、pip管理に移行しようと思ったのが経緯です。


前提条件

以下の環境で実施しました。

・Windows10 21H2
※WSL2ではなく、素のWindows環境


Anaconda環境削除

まずは、Anaconda環境の削除です。

やり方は、いくつかありますが、

・anacondaのフォルダごと消す
・アプリと機能からアンインストール選択
・anaconda-cleanを実行

今回はanaconda-cleanで削除しました。

参考サイト

(実行時のログ保存を忘れたので)引用先そのままです。

conda install anaconda-clean
anaconda-clean


Pythonとpipインストール

これまではAnacondaをインストールした時点でPythonは含まれてましたが、それらを削除したので、再度Pythonをインストールする必要があります。

こちらは単純にpython.orgからダウンロードしました。

Python ダウンロード

Pythonのバージョンは目的に応じて選ぶ形になります。

最新バージョンは、他のパッケージがサポートされてない場合もあるので、今回は、少し古いPython3.8.10を入れました。


インストール手順

・ダウンロードしたpython-xxx.exeを実行
Add Python to PATH をチェック

インストール画面


インストール完了

ちなみに、pipPythonをインストールした時点で入ります(仮想環境を作るvenvも)。

環境構築の際、必要なパッケージやツールのインストールはPythonに紐づいたpipvenvを使って管理します。


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を実行

ダウンロード選択
インストーラ指示に従い選択
Agreeを選択
どちらかを選択
インストール完了

Spyder設定

以下のように、インタプリタ設定で仮想環境のPythonを選択しました。

Tools/Preferencesを選択
Python interpreter設定で目的の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 会員の方は無料で読めます。


いいなと思ったら応援しよう!