Anacondaを使用してPythonのパッケージを管理しています。
最近、PCを変えたのですが、新しいPCでも同じようにAnacondaを使用したい!
そこで、ほかのPCへ移行する方法を紹介します
設定手順
- コピーしたい仮想環境に切り替える
- パッケージ情報を .yml or .txt に出力する
- 新しいPCで 2. のファイルをもとに仮想環境を作成する
今回はWindows PowerShellを使用して、作業していきます
コピーしたい仮想環境に切り替える
conda activate 「コピーしたい仮想環境名」
で仮想環境を切り替え、
conda info -e
で確認します
(実行例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// base → python-learning へ切り替える例 //現在使用している仮想環境を確認 // * がついているbaseという環境を使用中 (base) PS C:\Users> conda info -e # conda environments: # base * C:\Users\******\anaconda3 django-start C:\Users\******\anaconda3\envs\django-start django_blog C:\Users\******\anaconda3\envs\django_blog python-learning C:\Users\******\anaconda3\envs\python-learning // python-learning という仮想環境に切り替える (base) PS C:\Users> conda activate python-learning //現在使用している仮想環境を確認すると // * がpython-learningという環境につく (python-learning) PS C:\Users> conda info -e # conda environments: # base C:\Users\******\anaconda3 django-start C:\Users\******\anaconda3\envs\django-start django_blog C:\Users\******\anaconda3\envs\django_blog python-learning * C:\Users\******\anaconda3\envs\python-learning (python-learning) PS C:\Users> |
パッケージ情報を .yml or .txt に出力する
出力するディレクトリに cd コマンドで移動して、
(.yml で出力する場合)
conda env export > 「ファイル名」.yml
(.txt で出力する場合)
conda list –export >「ファイル名」.txt
もしくは
conda list –explicit >「ファイル名」.txt
を実行します
(実行例)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
// 今回はデスクトップに移動 (python-learning) PS C:\Users> cd .\******\Desktop\ // デスクトップにpython-learning.yml を出力 (python-learning) PS C:\Users\******\Desktop> conda env export > python-learning.yml // デスクトップにpython-learning.txt を出力 (python-learning) PS C:\Users\******\Desktop> conda list --export > python-learning.txt //ちなみに 「 > 」以降をつけず実行すると、パッケージ情報を確認できます // .ymlの中身 (python-learning) PS C:\Users\******\Desktop> conda env export name: python-learning channels: - defaults dependencies: - autopep8=1.6.0=pyhd3eb1b0_1 - ca-certificates=2022.07.19=haa95532_0 - certifi=2022.6.15=py39haa95532_0 - openssl=1.1.1q=h2bbff1b_0 - pip=21.2.4=py39haa95532_0 - python=3.9.12=h6244533_0 - setuptools=61.2.0=py39haa95532_0 - sqlite=3.38.3=h2bbff1b_0 - toml=0.10.2=pyhd3eb1b0_0 - tzdata=2022a=hda174b7_0 - vc=14.2=h21ff451_1 - vs2015_runtime=14.27.29016=h5e58377_2 - wheel=0.37.1=pyhd3eb1b0_0 - wincertstore=0.2=py39haa95532_2 - pip: - lazy-object-proxy==1.7.1 - pycodestyle==2.9.0 - pyflakes==2.5.0 - tomli==2.0.1 - tomlkit==0.11.1 - typing-extensions==4.3.0 - wrapt==1.14.1 prefix: C:\Users\******\anaconda3\envs\python-learning // .txtの中身 (python-learning) PS C:\Users\******\Desktop> conda list --export # This file may be used to create an environment using: # $ conda create --name <env> --file <this file> # platform: win-64 autopep8=1.6.0=pyhd3eb1b0_1 ca-certificates=2022.07.19=haa95532_0 certifi=2022.6.15=py39haa95532_0 lazy-object-proxy=1.7.1=pypi_0 openssl=1.1.1q=h2bbff1b_0 pip=21.2.4=py39haa95532_0 pycodestyle=2.9.0=pypi_0 pyflakes=2.5.0=pypi_0 python=3.9.12=h6244533_0 setuptools=61.2.0=py39haa95532_0 sqlite=3.38.3=h2bbff1b_0 toml=0.10.2=pyhd3eb1b0_0 tomli=2.0.1=pypi_0 tomlkit=0.11.1=pypi_0 typing-extensions=4.3.0=pypi_0 tzdata=2022a=hda174b7_0 vc=14.2=h21ff451_1 vs2015_runtime=14.27.29016=h5e58377_2 wheel=0.37.1=pyhd3eb1b0_0 wincertstore=0.2=py39haa95532_2 wrapt=1.14.1=pypi_0 |
新しいPCで 2. のファイルをもとに仮想環境を作成する
(.yml をもとに仮想環境を作成)
conda env create -n 新たな環境名 -f ファイル名.yml
(.txt をもとに仮想環境を作成)
conda create -n 環境名 -f ファイル名.txt
※なんかうまくいかなかったです
.yml をもとに仮想環境を作成してみたらエラーが出ました
(エラー内容)
1 2 3 4 5 6 7 8 |
Pip subprocess error: ERROR: Could not install packages due to an OSError: [WinError 5] アクセスが拒否されました。: 'C:\\Users\\****\\AppData\\Local\\Temp\\pip-uninstall-ykqgnrqg\\pycodestyle.exe' Consider using the `--user` option or check the permissions. failed CondaEnvException: Pip failed |
check the permissions.
と出ているので、権限系のエラーっぽいです。
なので、PowerShellを管理者権限で実行してみます
うーん、先ほどと同じエラーが出ます…
もう少しエラーを見てみます
(エラー内容)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Attempting uninstall: pycodestyle Found existing installation: pycodestyle 2.8.0 Uninstalling pycodestyle-2.8.0: Successfully uninstalled pycodestyle-2.8.0 Pip subprocess error: ERROR: Could not install packages due to an OSError: [WinError 5] アクセスが拒否されました。: 'C:\\Users\\******\\AppData\\Local\\Temp\\pip-uninstall-ykqgnrqg\\pycodestyle.exe' Consider using the `--user` option or check the permissions. failed CondaEnvException: Pip failed |
pycodestyle のインストールに失敗してるっぽい
2.8.0をアンインストール→2.9.0をインストールする過程で失敗している
バージョンにこだわりはないので、yml内のpycodestyleのバージョンを2.8.0に変更してみます
※ここからは管理者権限でなくてもOK!
1 2 3 4 5 |
//変更前 - pycodestyle==2.9.0 //変更後 - pycodestyle==2.8.0 |
まず、仮想環境が中途半端にできているので、消します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
// さっき作った仮想環境が中途半端にできているので削除する (base) PS C:\Users\******\Desktop> conda info -e # conda environments: # base * C:\Users\******\anaconda3 django-start C:\Users\******\anaconda3\envs\django-start django_blog C:\Users\******\anaconda3\envs\django_blog python-learning C:\Users\******\anaconda3\envs\python-learning python-learning-from-yml C:\Users\******\anaconda3\envs\python-learning-from-yml (base) PS C:\Users\******\Desktop> conda remove -n python-learning-from-yml --all Remove all packages in environment C:\Users\******\anaconda3\envs\python-learning-from-yml: ## Package Plan ## environment location: C:\Users\******\anaconda3\envs\python-learning-from-yml The following packages will be REMOVED: autopep8-1.6.0-pyhd3eb1b0_1 ca-certificates-2022.07.19-haa95532_0 certifi-2022.6.15-py39haa95532_0 openssl-1.1.1q-h2bbff1b_0 pip-21.2.4-py39haa95532_0 pycodestyle-2.8.0-pyhd3eb1b0_0 python-3.9.12-h6244533_0 setuptools-61.2.0-py39haa95532_0 sqlite-3.38.3-h2bbff1b_0 toml-0.10.2-pyhd3eb1b0_0 tzdata-2022a-hda174b7_0 vc-14.2-h21ff451_1 vs2015_runtime-14.27.29016-h5e58377_2 wheel-0.37.1-pyhd3eb1b0_0 wincertstore-0.2-py39haa95532_2 Proceed ([y]/n)? y Preparing transaction: done Verifying transaction: done Executing transaction: done //削除確認 // python-learning-from-yml がないことを確認 (base) PS C:\Users\******\Desktop> conda info -e # conda environments: # base * C:\Users\******\anaconda3 django-start C:\Users\******\anaconda3\envs\django-start django_blog C:\Users\******\anaconda3\envs\django_blog python-learning C:\Users\******\anaconda3\envs\python-learning |
再作成します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
(base) PS C:\Users\******\Desktop> conda env create -n python-learning-from-yml -f python-learning.yml Collecting package metadata (repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists. <== current version: 4.14.0 latest version: 22.11.1 Please update conda by running $ conda update -n base -c defaults conda Preparing transaction: done Verifying transaction: done Executing transaction: done Installing pip dependencies: - Ran pip subprocess with arguments: ['C:\\Users\\******\\anaconda3\\envs\\python-learning-from-yml\\python.exe', '-m', 'pip', 'install', '-U', '-r', 'C:\\Users\\******\\Desktop\\condaenv.xmygcpnb.requirements.txt'] Pip subprocess output: Collecting lazy-object-proxy==1.7.1 Using cached lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl (22 kB) Requirement already satisfied: pycodestyle==2.8.0 in c:\users\******\anaconda3\envs\python-learning-from-yml\lib\site-packages (from -r C:\Users\******\Desktop\condaenv.xmygcpnb.requirements.txt (line 2)) (2.8.0) Collecting pyflakes==2.5.0 Using cached pyflakes-2.5.0-py2.py3-none-any.whl (66 kB) Collecting tomli==2.0.1 Using cached tomli-2.0.1-py3-none-any.whl (12 kB) Collecting tomlkit==0.11.1 Using cached tomlkit-0.11.1-py3-none-any.whl (34 kB) Collecting typing-extensions==4.3.0 Using cached typing_extensions-4.3.0-py3-none-any.whl (25 kB) Collecting wrapt==1.14.1 Using cached wrapt-1.14.1-cp39-cp39-win_amd64.whl (35 kB) Installing collected packages: wrapt, typing-extensions, tomlkit, tomli, pyflakes, lazy-object-proxy Successfully installed lazy-object-proxy-1.7.1 pyflakes-2.5.0 tomli-2.0.1 tomlkit-0.11.1 typing-extensions-4.3.0 wrapt-1.14.1 done # # To activate this environment, use # # $ conda activate python-learning-from-yml # # To deactivate an active environment, use # # $ conda deactivate Retrieving notices: ...working... done |
ちゃんと作成できたみたいです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// python-learning-from-yml がある (python-learning) PS C:\Users\******\Desktop> conda info -e # conda environments: # base C:\Users\******\anaconda3 django-start C:\Users\******\anaconda3\envs\django-start django_blog C:\Users\******\anaconda3\envs\django_blog python-learning * C:\Users\******\anaconda3\envs\python-learning python-learning-from-yml C:\Users\******\anaconda3\envs\python-learning-from-yml // python-learning-from-yml に切り替える (python-learning) PS C:\Users\******\Desktop> conda activate python-learning-from-yml // インストールされたパッケージを確認 (python-learning-from-yml) PS C:\Users\******\Desktop> conda list # packages in environment at C:\Users\******\anaconda3\envs\python-learning-from-yml: # # Name Version Build Channel autopep8 1.6.0 pyhd3eb1b0_1 ca-certificates 2022.07.19 haa95532_0 certifi 2022.6.15 py39haa95532_0 lazy-object-proxy 1.7.1 pypi_0 pypi openssl 1.1.1q h2bbff1b_0 pip 21.2.4 py39haa95532_0 pycodestyle 2.8.0 pyhd3eb1b0_0 pyflakes 2.5.0 pypi_0 pypi python 3.9.12 h6244533_0 setuptools 61.2.0 py39haa95532_0 sqlite 3.38.3 h2bbff1b_0 toml 0.10.2 pyhd3eb1b0_0 tomli 2.0.1 pypi_0 pypi tomlkit 0.11.1 pypi_0 pypi typing-extensions 4.3.0 pypi_0 pypi tzdata 2022a hda174b7_0 vc 14.2 h21ff451_1 vs2015_runtime 14.27.29016 h5e58377_2 wheel 0.37.1 pyhd3eb1b0_0 wincertstore 0.2 py39haa95532_2 wrapt 1.14.1 pypi_0 pypi (python-learning-from-yml) PS C:\Users\******\Desktop> |
.txtをもとに作成するのはあきらめました。。。
実行すると、こちらもエラーが出ました
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
(base) PS C:\Users\******\Desktop> conda create -n python-learning-from-txt -f python-learning.txt Collecting package metadata (current_repodata.json): done Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source. Collecting package metadata (repodata.json): done Solving environment: failed PackagesNotFoundError: The following packages are not available from current channels: - python-learning.txt Current channels: - https://repo.anaconda.com/pkgs/main/win-64 - https://repo.anaconda.com/pkgs/main/noarch - https://repo.anaconda.com/pkgs/r/win-64 - https://repo.anaconda.com/pkgs/r/noarch - https://repo.anaconda.com/pkgs/msys2/win-64 - https://repo.anaconda.com/pkgs/msys2/noarch To search for alternate channels that may provide the conda package you're looking for, navigate to https://anaconda.org and use the search bar at the top of the page. |
エラーの内容から
anacondaが標準的に用意しているダウンロードサイトからは
もうダウンロードできなくなっているパッケージがあるらしい
まあ、ymlで作成できたからいいか(よくない)
下記の記事を参考にすれば行けそうですが、
今回のように一気にインストールする場合はどれが対象かわからないため、今回は諦めます。。
余談
pipとcondaに互換性はないため、
Anacondaを使用している場合はpipは極力使わないほうがいいらしい
参考文献
コメント