Windows に Anaconda をインストールすると様々なライブラリがイントールされた base 環境が構築されています.慣れないうちはこの base 環境にあらかじめインストールされたライブラリを利用したり,別のライブラリを追加インストールすればよいのですが,様々なライブラリをインストールすると,ライブラリの依存関係によって問題が発生することがあります.たとえば,Numpy のバージョン1系を利用した A というライブラリを利用していた base 環境に別の B というライブラリもインストールすると Numpy がバージョン2系にアップデートされることがあります.このアップデートによって Numpy のバージョン1系を利用するライブラリ A が動作しなくなるといった状況です.
さらに Python 自体も毎年バージョンアップされており,このバージョンアップは今後も継続されることから,将来的に最新版の Python が必要になったり,逆に過去のバージョンが必要になることもあります.
このような問題に悩まされないためには,自由自在に仮想環境を構築して切り替えられるようになるとよいでしょう.ここでは,Python 3.10 系がインストールされている環境に Python 3.12 系の仮想環境を構築し,仮想環境を自由に切り替えられるようにします.このうえで,異なる Numpy のバージョンをインストールしたり,Juypter Lab をインストールしたりします.なお,Windows 環境で説明していますが,macOS でもコマンドはほぼ同じです.
インストールされている仮想環境の一覧を確認します.Anaconda をインストールしただけの状態では,base 環境のみが設定されているはずです.また,python
コマンドの実体がどこにあるかを where
コマンドで確認します.さらに,base 環境にインストールされた Python のバージョンが 3.10.9 であることが確認できます.(なお,macOS では where
コマンドの代わりに which
コマンドを使用してください.)
(base) C:\Users\rinsaka>conda env list ⏎ # conda environments: # base * C:\Users\rinsaka\anaconda3 (base) C:\Users\rinsaka>where python ⏎ C:\Users\rinsaka\anaconda3\python.exe C:\Users\rinsaka\AppData\Local\Microsoft\WindowsApps\python.exe (base) C:\Users\rinsaka>python --version ⏎ Python 3.10.9 (base) C:\Users\rinsaka>
どのようなバージョンの Python をインストールできるか,その一覧を表示してみます.この原稿作成時点では,python 2.7 系から 3.12 系まで,様々なバージョンが表示されました.
(base) C:\Users\rinsaka>conda search "python" ⏎
Loading channels: done
# Name Version Build Channel
python 2.7.13 h1b6d89f_16 pkgs/main
...(中略)...
python 2.7.18 hfb89ab9_0 pkgs/main
python 3.5.4 h1357f44_23 pkgs/main
...(中略)...
python 3.5.6 he025d50_0 pkgs/main
python 3.6.2 h09676a0_15 pkgs/main
...(中略)...
python 3.6.13 h3758d61_0 pkgs/main
python 3.7.0 hea74fb7_0 pkgs/main
...(中略)...
python 3.7.16 h6244533_0 pkgs/main
python 3.8.0 hff0d562_0 pkgs/main
...(中略)...
python 3.8.19 h1aa4202_0 pkgs/main
python 3.9.0 h6244533_2 pkgs/main
...(中略)...
python 3.9.19 h1aa4202_1 pkgs/main
python 3.10.0 h96c0403_3 pkgs/main
...(中略)...
python 3.10.14 he1021f5_1 pkgs/main
python 3.11.0 h966fe2a_2 pkgs/main
...(中略)...
python 3.11.9 he1021f5_0 pkgs/main
python 3.12.0 h1d929f7_0 pkgs/main
python 3.12.1 h1d929f7_0 pkgs/main
python 3.12.2 h1d929f7_0 pkgs/main
python 3.12.3 h1d929f7_0 pkgs/main
python 3.12.3 h1d929f7_1 pkgs/main
python 3.12.4 h14ffc60_1 pkgs/main
(base) C:\Users\rinsaka>
上の結果には多数のバージョンが表示されていました.今度は python 3.12 系だけを一覧で表示してみます.
(base) C:\Users\rinsaka>conda search "python=3.12" ⏎
Loading channels: done
# Name Version Build Channel
python 3.12.0 h1d929f7_0 pkgs/main
python 3.12.1 h1d929f7_0 pkgs/main
python 3.12.2 h1d929f7_0 pkgs/main
python 3.12.3 h1d929f7_0 pkgs/main
python 3.12.3 h1d929f7_1 pkgs/main
python 3.12.4 h14ffc60_1 pkgs/main
(base) C:\Users\rinsaka>
Python 3.12 系の最新版を利用するための仮想環境を構築します.仮想環境の名前は自由に決めてよいですが,ここでは「py312jupyter」という名称を設定することにします.実際上,同じPythonのバージョン上で複数の環境を切り替える必要もあるので,わかりやすい名称を設定するとよいでしょう.次のコマンドのように -n 仮想環境の名称
オプションと python=3.12
のようにバージョンを指定します.
(base) C:\Users\rinsaka>conda create -n py312jupyter python=3.12 ⏎ Channels: - defaults Platform: win-64 Collecting package metadata (repodata.json): done Solving environment: done ## Package Plan ## environment location: C:\Users\rinsaka\anaconda3\envs\py312jupyter added / updated specs: - python=3.12 The following NEW packages will be INSTALLED: bzip2 pkgs/main/win-64::bzip2-1.0.8-h2bbff1b_6 ca-certificates pkgs/main/win-64::ca-certificates-2024.7.2-haa95532_0 expat pkgs/main/win-64::expat-2.6.2-hd77b12b_0 libffi pkgs/main/win-64::libffi-3.4.4-hd77b12b_1 openssl pkgs/main/win-64::openssl-3.0.14-h827c3e9_0 pip pkgs/main/win-64::pip-24.2-py312haa95532_0 python pkgs/main/win-64::python-3.12.4-h14ffc60_1 setuptools pkgs/main/win-64::setuptools-72.1.0-py312haa95532_0 sqlite pkgs/main/win-64::sqlite-3.45.3-h2bbff1b_0 tk pkgs/main/win-64::tk-8.6.14-h0416ee5_0 tzdata pkgs/main/noarch::tzdata-2024a-h04d1e81_0 vc pkgs/main/win-64::vc-14.40-h2eaa2aa_0 vs2015_runtime pkgs/main/win-64::vs2015_runtime-14.40.33807-h98bb1dd_0 wheel pkgs/main/win-64::wheel-0.43.0-py312haa95532_0 xz pkgs/main/win-64::xz-5.4.6-h8cc25b3_1 zlib pkgs/main/win-64::zlib-1.2.13-h8cc25b3_1 Proceed ([y]/n)? y ⏎ Downloading and Extracting Packages: Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ conda activate py312jupyter # # To deactivate an active environment, use # # $ conda deactivate (base) C:\Users\rinsaka>
上の実行結果に仮想環境を有効にするためのコマンドと無効化するためのコマンドがヒントとして表示されていることに注意してください.
仮想環境が作成されたことを次のコマンドで確認します.「py312jupyter」という名称の仮想環境が作成されています.このとき,現在有効な(仮想)環境は base 環境であるので,コマンドプロンプトの先頭に (base) と表示されており,出力結果にも「*」印が表示されていることに注意してください.
(base) C:\Users\rinsaka>conda env list ⏎ # conda environments: # base * C:\Users\rinsaka\anaconda3 py312jupyter C:\Users\rinsaka\anaconda3\envs\py312jupyter (base) C:\Users\rinsaka>
Python の仮想環境 py312jupyter を有効にします.これにより,コマンドプロンプトの先頭が (py312jupyter) に切り替わりました.さらに,conda env list
コマンドによって仮想環境の一覧と現在有効となっている仮想環境を確認できます.
(base) C:\Users\rinsaka>conda activate py312jupyter ⏎ (py312jupyter) C:\Users\rinsaka>conda env list ⏎ # conda environments: # base C:\Users\rinsaka\anaconda3 py312jupyter * C:\Users\rinsaka\anaconda3\envs\py312jupyter (py312jupyter) C:\Users\rinsaka>
python コマンドの実体が切り替わっていることを確認します.さらに python のバージョンを確認すると 3.12.4 であることがわかりました.
(py312jupyter) C:\Users\rinsaka>where python ⏎ C:\Users\rinsaka\anaconda3\envs\py312jupyter\python.exe C:\Users\rinsaka\AppData\Local\Microsoft\WindowsApps\python.exe (py312jupyter) C:\Users\rinsaka>python --version ⏎ Python 3.12.4 (py312jupyter) C:\Users\rinsaka>
仮想環境から抜けるには conda deactivate
コマンドを実行します.このコマンドによって,base 環境に戻ることができます.
(py312jupyter) C:\Users\rinsaka>conda deactivate ⏎ (base) C:\Users\rinsaka>conda env list ⏎ # conda environments: # base * C:\Users\rinsaka\anaconda3 py312jupyter C:\Users\rinsaka\anaconda3\envs\py312jupyter (base) C:\Users\rinsaka>
再び仮想環境を有効にして,その仮想環境にNumpyライブラリのバージョンを指定してインストールすることを考えます.具体的には,バージョンを指定せずに最新版をインストールしたり,バージョンを完全に指定してインストールしたり,ある系統の最新版をインストールしたりする方法を確認します.
まず,仮想環境 py312jupyter を有効にします.
(base) C:\Users\rinsaka>conda activate py312jupyter ⏎
(py312jupyter) C:\Users\rinsaka>
念の為に,python のバージョンが切り替わっていることを確認します.
(py312jupyter) C:\Users\rinsaka>where python ⏎ C:\Users\rinsaka\anaconda3\envs\py312jupyter\python.exe C:\Users\rinsaka\AppData\Local\Microsoft\WindowsApps\python.exe (py312jupyter) C:\Users\rinsaka>python --version ⏎ Python 3.12.4 (py312jupyter) C:\Users\rinsaka>
インストール済みのライブラリを一覧表示します.仮想環境をインストールした直後はライブラリはほぼインストールされていません.(一方で Anaconda の base 環境には多くのライブラリがインストールされていることにも注意してください.)
(py312jupyter) C:\Users\rinsaka>pip list ⏎
Package Version
---------- -------
pip 24.2
setuptools 72.1.0
wheel 0.43.0
(py312jupyter) C:\Users\rinsaka>
イントールできるライブラリのバージョンを確認してみます.例えば Numpy ライブラリのバージョンを確認します.すると,最新バージョンが 2.0.1 であることがわかります.(ただし,このコマンドは実験的なコマンドであることが警告として表示されていることにも注意してください.)
(py312jupyter) C:\Users\rinsaka>pip index versions numpy ⏎ WARNING: pip index is currently an experimental command. It may be removed/changed in a future release without prior warning. numpy (2.0.1) Available versions: 2.0.1, 2.0.0, 1.26.4, 1.26.3, 1.26.2, 1.26.1, 1.26.0, 1.25.2, 1.25.1, 1.25.0, 1.24.4, 1.24.3, 1.24.2, 1.24.1, 1.24.0, 1.23.5, 1.23.4, 1.23.3, 1.23.2, 1.23.1, 1.23.0, 1.22.4, 1.22.3, 1.22.2, 1.22.1, 1.22.0, 1.21.1, 1.21.0, 1.20.3, 1.20.2, 1.20.1, 1.20.0, 1.19.5, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19.0, 1.18.5, 1.18.4, 1.18.3, 1.18.2, 1.18.1, 1.18.0, 1.17.5, 1.17.4, 1.17.3, 1.17.2, 1.17.1, 1.17.0, 1.16.6, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16.0, 1.15.4, 1.15.3, 1.15.2, 1.15.1, 1.15.0, 1.14.6, 1.14.5, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14.0, 1.13.3, 1.13.1, 1.13.0, 1.12.1, 1.12.0, 1.11.3, 1.11.2, 1.11.1, 1.11.0, 1.10.4, 1.10.2, 1.10.1, 1.10.0.post2, 1.9.3, 1.9.2, 1.9.1, 1.9.0, 1.8.2, 1.8.1, 1.8.0, 1.7.2, 1.7.1, 1.7.0, 1.6.2, 1.6.1, 1.6.0, 1.5.1, 1.5.0, 1.4.1, 1.3.0 (py312jupyter) C:\Users\rinsaka>
バージョンを指定せずに Numpy をインストールします.すると最新版であるバージョン 2.0.1 がインストールされます.
(py312jupyter) C:\Users\rinsaka>pip install numpy ⏎ Collecting numpy Downloading numpy-2.0.1-cp312-cp312-win_amd64.whl.metadata (60 kB) Downloading numpy-2.0.1-cp312-cp312-win_amd64.whl (16.3 MB) ---------------------------------------- 16.3/16.3 MB 5.8 MB/s eta 0:00:00 Installing collected packages: numpy Successfully installed numpy-2.0.1 (py312jupyter) C:\Users\rinsaka>pip list ⏎ Package Version ---------- ------- numpy 2.0.1 pip 24.2 setuptools 72.1.0 wheel 0.43.0 (py312jupyter) C:\Users\rinsaka>
別のバージョンを Numpy をインストールするために,今インストールした Numpy を一旦アンインストールします.
(py312jupyter) C:\Users\rinsaka>pip uninstall numpy ⏎ Found existing installation: numpy 2.0.1 Uninstalling numpy-2.0.1: Would remove: c:\users\rinsaka\anaconda3\envs\py312jupyter\lib\site-packages\numpy-2.0.1-cp312-cp312-win_amd64.whl c:\users\rinsaka\anaconda3\envs\py312jupyter\lib\site-packages\numpy-2.0.1.dist-info\* c:\users\rinsaka\anaconda3\envs\py312jupyter\lib\site-packages\numpy.libs\libscipy_openblas64_-fb1711452d4d8cee9f276fd1449ee5c7.dll c:\users\rinsaka\anaconda3\envs\py312jupyter\lib\site-packages\numpy.libs\msvcp140-8021418012832a07a8ca5105a33b1086.dll c:\users\rinsaka\anaconda3\envs\py312jupyter\lib\site-packages\numpy\* c:\users\rinsaka\anaconda3\envs\py312jupyter\scripts\f2py.exe c:\users\rinsaka\anaconda3\envs\py312jupyter\scripts\numpy-config.exe Proceed (Y/n)? Y ⏎ Successfully uninstalled numpy-2.0.1 (py312jupyter) C:\Users\rinsaka>
次にバージョンを指定して,1.26.1 をインストールしてみます.このとき,"numpy==1.26.1"
のように ==
でバージョンを指定することに注意してください.
(py312jupyter) C:\Users\rinsaka>pip install "numpy==1.26.1" ⏎ Collecting numpy==1.26.1 Downloading numpy-1.26.1-cp312-cp312-win_amd64.whl.metadata (61 kB) Downloading numpy-1.26.1-cp312-cp312-win_amd64.whl (15.5 MB) ---------------------------------------- 15.5/15.5 MB 3.8 MB/s eta 0:00:00 Installing collected packages: numpy Successfully installed numpy-1.26.1 (py312jupyter) C:\Users\rinsaka>pip list ⏎ Package Version ---------- ------- numpy 1.26.1 pip 24.2 setuptools 72.1.0 wheel 0.43.0 (py312jupyter) C:\Users\rinsaka>
今度は Numpy 1系の最新版をインストールします.一旦アンインストールしてからバージョン2.0未満という指定をすることで1系の最新版をインストールすることができます.
(py312jupyter) C:\Users\rinsaka>pip uninstall numpy ⏎ ...(中略)... (py312jupyter) C:\Users\rinsaka>pip install "numpy<2.0" ⏎ Collecting numpy<2.0 Downloading numpy-1.26.4-cp312-cp312-win_amd64.whl.metadata (61 kB) Downloading numpy-1.26.4-cp312-cp312-win_amd64.whl (15.5 MB) ---------------------------------------- 15.5/15.5 MB 3.7 MB/s eta 0:00:00 Installing collected packages: numpy Successfully installed numpy-1.26.4 (py312jupyter) C:\Users\rinsaka>pip list ⏎ Package Version ---------- ------- numpy 1.26.4 pip 24.2 setuptools 72.1.0 wheel 0.43.0 (py312jupyter) C:\Users\rinsaka>
インストールしたライブラリの一覧をファイルに出力することができます.このファイルを利用することで,他のPCなどでも同じバージョンのライブラリ構成を再現しやすくなります.
次のコマンドを実行すると,インストールされているライブラリとそのバージョンの一覧が画面に出力されます.このコマンドの出力をファイルにリダイレクトすることで,ファイルに書き出すことができます.このときファイル名は何でも良いのですが,慣習的に「requirements.txt」というファイル名が利用されます.
(py312jupyter) C:\Users\rinsaka>pip freeze ⏎ numpy==1.26.4 setuptools==72.1.0 wheel==0.43.0 (py312jupyter) C:\Users\rinsaka>pip freeze > requirements.txt ⏎ (py312jupyter) C:\Users\rinsaka>
上のコマンドによって次のようなファイルが作成されています.
requirements.txt
numpy==1.26.4
setuptools==72.1.0
wheel==0.43.0
requirements.txt があれば,そのファイルを利用して同じライブラリをインストールして環境を再現することができます.このときファイル名の前に「-r」オプションを指定することに注意してください.
(py312jupyter) C:\Users\rinsaka>pip install -r requirements.txt ⏎ Collecting numpy==1.26.4 (from -r requirements.txt (line 1)) Using cached numpy-1.26.4-cp312-cp312-win_amd64.whl.metadata (61 kB) Requirement already satisfied: setuptools==72.1.0 in c:\users\rinsaka\anaconda3\envs\py312jupyter\lib\site-packages (from -r requirements.txt (line 2)) (72.1.0) Requirement already satisfied: wheel==0.43.0 in c:\users\rinsaka\anaconda3\envs\py312jupyter\lib\site-packages (from -r requirements.txt (line 3)) (0.43.0) Using cached numpy-1.26.4-cp312-cp312-win_amd64.whl (15.5 MB) Installing collected packages: numpy Successfully installed numpy-1.26.4 (py312jupyter) C:\Users\rinsaka>pip list ⏎ Package Version ---------- ------- numpy 1.26.4 pip 24.2 setuptools 72.1.0 wheel 0.43.0 (py312jupyter) C:\Users\rinsaka>
次に Jupyter lab もインストールしてみます.説明は省略しますが,インストール後に pip freeze
コマンドで requirements.txt を作成してもよいでしょう.
(py312jupyter) C:\Users\rinsaka>pip install jupyterlab
Collecting jupyterlab
Downloading jupyterlab-4.2.4-py3-none-any.whl.metadata (16 kB)
...(中略)...
Installing collected packages: webencodings, wcwidth, pywin32, pure-eval, fastjsonschema, websocket-client, webcolors, urllib3, uri-template, types-python-dateutil, traitlets, tornado, tinycss2, soupsieve, sniffio, six, send2trash, rpds-py, rfc3986-validator, pyzmq, pyyaml, pywinpty, python-json-logger, pygments, pycparser, psutil, prompt-toolkit, prometheus-client, platformdirs, parso, pandocfilters, packaging, overrides, nest-asyncio, mistune, MarkupSafe, jupyterlab-pygments, jsonpointer, json5, idna, h11, fqdn, executing, defusedxml, decorator, debugpy, colorama, charset-normalizer, certifi, babel, attrs, async-lru, terminado, rfc3339-validator, requests, referencing, python-dateutil, matplotlib-inline, jupyter-core, jinja2, jedi, httpcore, comm, cffi, bleach, beautifulsoup4, asttokens, anyio, stack-data, jupyter-server-terminals, jupyter-client, jsonschema-specifications, httpx, arrow, argon2-cffi-bindings, jsonschema, isoduration, ipython, argon2-cffi, nbformat, ipykernel, nbclient, jupyter-events, nbconvert, jupyter-server, notebook-shim, jupyterlab-server, jupyter-lsp, jupyterlab
Successfully installed MarkupSafe-2.1.5 anyio-4.4.0 argon2-cffi-23.1.0 argon2-cffi-bindings-21.2.0 arrow-1.3.0 asttokens-2.4.1 async-lru-2.0.4 attrs-24.2.0 babel-2.16.0 beautifulsoup4-4.12.3 bleach-6.1.0 certifi-2024.7.4 cffi-1.17.0 charset-normalizer-3.3.2 colorama-0.4.6 comm-0.2.2 debugpy-1.8.5 decorator-5.1.1 defusedxml-0.7.1 executing-2.0.1 fastjsonschema-2.20.0 fqdn-1.5.1 h11-0.14.0 httpcore-1.0.5 httpx-0.27.0 idna-3.7 ipykernel-6.29.5 ipython-8.26.0 isoduration-20.11.0 jedi-0.19.1 jinja2-3.1.4 json5-0.9.25 jsonpointer-3.0.0 jsonschema-4.23.0 jsonschema-specifications-2023.12.1 jupyter-client-8.6.2 jupyter-core-5.7.2 jupyter-events-0.10.0 jupyter-lsp-2.2.5 jupyter-server-2.14.2 jupyter-server-terminals-0.5.3 jupyterlab-4.2.4 jupyterlab-pygments-0.3.0 jupyterlab-server-2.27.3 matplotlib-inline-0.1.7 mistune-3.0.2 nbclient-0.10.0 nbconvert-7.16.4 nbformat-5.10.4 nest-asyncio-1.6.0 notebook-shim-0.2.4 overrides-7.7.0 packaging-24.1 pandocfilters-1.5.1 parso-0.8.4 platformdirs-4.2.2 prometheus-client-0.20.0 prompt-toolkit-3.0.47 psutil-6.0.0 pure-eval-0.2.3 pycparser-2.22 pygments-2.18.0 python-dateutil-2.9.0.post0 python-json-logger-2.0.7 pywin32-306 pywinpty-2.0.13 pyyaml-6.0.2 pyzmq-26.1.0 referencing-0.35.1 requests-2.32.3 rfc3339-validator-0.1.4 rfc3986-validator-0.1.1 rpds-py-0.20.0 send2trash-1.8.3 six-1.16.0 sniffio-1.3.1 soupsieve-2.6 stack-data-0.6.3 terminado-0.18.1 tinycss2-1.3.0 tornado-6.4.1 traitlets-5.14.3 types-python-dateutil-2.9.0.20240316 uri-template-1.3.0 urllib3-2.2.2 wcwidth-0.2.13 webcolors-24.8.0 webencodings-0.5.1 websocket-client-1.8.0
(py312jupyter) C:\Users\rinsaka>
作成した仮想環境が不要になれば削除するとよいでしょう.このためには,仮想環境から base 環境に戻り,pip remove
コマンドに -n 仮想環境名
オプションと --all
オプションを付けて実行します.
(py312jupyter) C:\Users\rinsaka>conda env list ⏎ # conda environments: # base C:\Users\rinsaka\anaconda3 py312jupyter * C:\Users\rinsaka\anaconda3\envs\py312jupyter (py312jupyter) C:\Users\rinsaka>conda deactivate ⏎ (base) C:\Users\rinsaka>conda env list ⏎ # conda environments: # base * C:\Users\rinsaka\anaconda3 py312jupyter C:\Users\rinsaka\anaconda3\envs\py312jupyter (base) C:\Users\rinsaka>conda remove -n py312jupyter --all ⏎ Remove all packages in environment C:\Users\rinsaka\anaconda3\envs\py312jupyter: ## Package Plan ## environment location: C:\Users\rinsaka\anaconda3\envs\py312jupyter The following packages will be REMOVED: bzip2-1.0.8-h2bbff1b_6 ca-certificates-2024.7.2-haa95532_0 expat-2.6.2-hd77b12b_0 libffi-3.4.4-hd77b12b_1 openssl-3.0.14-h827c3e9_0 pip-24.2-py312haa95532_0 python-3.12.4-h14ffc60_1 setuptools-72.1.0-py312haa95532_0 sqlite-3.45.3-h2bbff1b_0 tk-8.6.14-h0416ee5_0 tzdata-2024a-h04d1e81_0 vc-14.40-h2eaa2aa_0 vs2015_runtime-14.40.33807-h98bb1dd_0 wheel-0.43.0-py312haa95532_0 xz-5.4.6-h8cc25b3_1 zlib-1.2.13-h8cc25b3_1 Proceed ([y]/n)? y ⏎ Preparing transaction: done Verifying transaction: done Executing transaction: done (base) C:\Users\rinsaka>conda env list ⏎ # conda environments: # base * C:\Users\rinsaka\anaconda3 (base) C:\Users\rinsaka>