LoginSignup
15
15

More than 3 years have passed since last update.

Anaconda 環境で、ダウングレードしてしまったパッケージをもとに戻す

Last updated at Posted at 2019-02-17

はじめに

簡単な方法で元のバージョンに戻すことができます.
だからぜひいいねしてください.
結論だけさっさと知りたい方は,下記の穢土転生の術まで読み飛ばしてください.

悲しい出来事(この記事を書くきっかけになった出来事)

前置き

趣味で作成しているPythonのライブラリがあるのですが,そのライブラリのプロファイリングをしようとしたときの話です.

こちらの記事にも書いてあるとおり,cProfileV という便利なものがあるそうです.
記事内ではpipコマンドでインストールするように書かれていましたが,Anaconda環境なので、Anaconda用に配布されてないかな〜と思ったところ,ありました

インストール

以下,ログの一部です

The following packages will be UPDATED:

  ca-certificates    conda-forge::ca-certificates-2018.11.~ --> pkgs/main::ca-certificates-2019.1.23-0
  pkginfo                                      1.4.2-py37_1 --> 1.5.0.1-py27_0
  setuptools                                  40.6.3-py37_0 --> 40.7.3-py27_0
  tqdm               pkgs/main/linux-64::tqdm-4.28.1-py37h~ --> pkgs/main/noarch::tqdm-4.29.1-py_0

The following packages will be SUPERSEDED by a higher-priority channel:

  certifi            conda-forge::certifi-2018.11.29-py37_~ --> pkgs/main::certifi-2018.11.29-py27_0
  pip                            pkgs/main::pip-18.1-py37_0 --> pkgs/free::pip-7.1.0-py27_0
  requests                pkgs/main::requests-2.21.0-py37_0 --> pkgs/free::requests-2.14.2-py27_0

The following packages will be DOWNGRADED:

  backports                                      1.0-py37_1 --> 1.0-py27_1
  backports.shutil_~                           1.0.0-py37_2 --> 1.0.0-py27_2
  python                                   3.7.1-h0371630_7 --> 2.7.15-h9bab390_6


Proceed ([y]/n)? y

思いっきりyと押してますが、Python2.7 までダウングレードしています
押してから気づきました(妙に時間がかかると思ったわけです...)

コンソールも悲しみですね...

$ python
Python 2.7.15 |Anaconda, Inc.| (default, Dec 14 2018, 19:04:19)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

穢土転生の術

Step1. 過去の環境でのバージョンを確認

下記のコマンドで,過去に自分がどのパッケージどのバージョンを利用していたか,確認できます.

$ conda list --revisions
〜〜〜〜〜〜〜〜省略〜〜〜〜〜〜〜〜
2019-02-06 21:40:33  (rev 2)
    +deap-1.2.2 (conda-forge)

2019-02-17 20:52:26  (rev 3)
     backports  {1.0 -> 1.0}
     backports.shutil_get_terminal_size  {1.0.0 -> 1.0.0}
     ca-certificates  {2018.11.29 (conda-forge) -> 2019.1.23}
     certifi  {2018.11.29 (conda-forge) -> 2018.11.29}
     pip  {18.1 -> 7.1.0}
     pkginfo  {1.4.2 -> 1.5.0.1}
     python  {3.7.1 -> 2.7.15}
     requests  {2.21.0 -> 2.14.2}
     setuptools  {40.6.3 -> 40.7.3}
     tqdm  {4.28.1 -> 4.29.1}
〜〜〜〜〜〜〜〜省略〜〜〜〜〜〜〜〜

読み方ですが,rev2がさっきまで使ってたやつ,rev3がやっちまったあとのバージョンです.
(Python本体以外にも、悲しいダウングレード攻撃の餌食になっているパッケージがが多々いますね...)

Step2. 蘇らせる

$ conda install --revision [revision number]

これだけです.

今回の場合だと、

$ conda install --revision 2

ですね!

conda-forgeからのインストールが含まれている場合には、

$ conda install --revision 2 -c conda-forge

を代わりに実行しましょう.

生存確認

$ python
Python 3.7.1 (default, Dec 14 2018, 19:28:38)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

自分のような愚か者のために,こんな簡単なコマンド1つで戻せるなんて!
やっぱAnacondaは神.

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15