AI の機械学習の一つであるディープラーニングを学ぼうとする時、皆さん何をとりあえず始めますか?
とりあえず Python の参考書のサンプルコードをコーディングして実行しながら覚えていくというようなことをするのではないでしょうか?
私も実際そのやり方でやってみましたが…
ライブラリのバージョン違いでエラーが出まくり!
参考書のサンプルコードの対象バージョンで実行しないと高確率でエラーが出ちゃいます。
どーしよー
こんな疑問に答えます。
今回はエラー解消策としてAnaconda の仮想環境でバージョンを揃えてバージョンのエラーを吸収する方法をお伝えします!
Anacondaの仮想環境でライブラリのバージョンエラーを解消!
Anacondaの仮想環境でライブラリのバージョンエラーを解消する手順です。
対象バージョンを確認
まず対象バージョンを確認しましょう。
私の場合は Python のバージョンは3.6.4、 tensorflow のバージョンは1.4.0が対象でした
実際な最新バージョンは、2020年5月19日時点で
Python のバージョンは3.7.7、 tensorflow のバージョンは2.1.0
Anaconda でバージョンを確かめるコマンドです。
conda list
これで全てのライブラリのバージョンが表示されます。
Anacondaで仮想環境を作成
その次に、Anacondaで仮想環境を作成します。
Anacondaで仮想環境を作成するコマンドです。
conda create -n 環境名 python=バージョン ライブラリ名=バージョン
先ほど決めたバージョンで仮想環境を追加するには下記のコマンドとなります
conda create -n py36 python=3.6.4 tensorflow=1.4.0
これでpy36という仮想環境が出来上がります。
対象のIDE(統合開発環境)で作成した仮想環境に切り替え
最後に、対象のIDE(統合開発環境)で作成した仮想環境に切り替えればサンプルコードのエラーは解消されることになります。
ここではIDE(統合開発環境)として Visual Studio CODE(通称:VSCode)を 取り上げて、後ほど説明いたします。
ダウングレードして仮想環境を構築する際の落とし穴
バージョンがさほど古くない場合は先ほどのコマンド「conda create …」一発で問題ないのですが
少々古いバージョンをインストールする場合、
コマンド「conda create …」を実行後に、エラー(PackagesNotFoundError)がでることがあります。
conda create -n 環境名 python=バージョン ライブラリ名=バージョン
Solving environment: failed PackagesNotFoundError: The following packages are not available from current channels:
condaが探すリポジトリ先を確認するコマンドと実行結果サンプルです。
conda config --get channels
--add channels 'defaults' # lowest priority
‘defaults’というリポジトリを探しに行っているって事になります。
例のエラー「PackagesNotFoundError」原因は、デフォルトのリポジトリに存在しなかったので、エラーが発生したということですね。
バージョンが古すぎると、このエラーがでることが多いです。
こちらのコマンドでどこにライブラリが保存されているのか確認できます。
conda search ライブラリ名
これでめでたくライブラリの保存先(チャネル名)がわかるわけですね。
で、エラー「PackagesNotFoundError」を解消する方法は2つあります。
方法1)ライブラリを検索先チャネルの追加を設定を行う
1つ目はこちらです。
conda config --append channels conda-forge
先ほどのコマンドで確認すると…
conda config --get channels
--add channels 'conda-forge' # lowest priority --add channels 'defaults' # highest priority
priority(優先度)は低いですがconda-forgeがリポジトリを探す対象として追加されていることがわかります。
ライブラリ保存先が「conda-forge」の場合は、この方法で解消した方が良いです。
(conda-forgeは一般的なので)
ライブラリ保存先が「conda-forge」以外の場合は、次に述べる方法2で解消した方が良いです。
方法2)ライブラリのインストール時に検索先チャネルを指定する
2つ目はこちらです。
こちらで一時的にチャネル名を指定できます。
conda install -c チャネル名 パッケージ名
ライブラリ保存先が「conda-forge」以外の場合は、こちらの方法で解消すると良いでしょう
これでエラーがめでたく解消するわけです。
次に出来上がった仮想環境を、サンプルコードの IDE に適用します。
ここではIDEとして、Visual Studio CODE(通称:VSCode)を 取り上げます。
VSCodeで anaconda 仮想環境を切り替える方法
ターミナルで仮想環境とPathを調べる
コマンドは下記です
conda info -e
condaで「create」した後に「info」した例です。こんな感じで表示されます
conda create -n py36 python=3.6.4 tensorflow=1.4.0
conda info -e
# conda environments: # base * C:\Users\ユーザ名\anaconda3 py36 C:\Users\ユーザ名\anaconda3\envs\py36
まだ、この段階ではpy36環境に切替わってません。
VSCodeで anaconda 仮想環境を切り替える方法は2つあります。
方法1が楽なのでオススメです。
方法1)コマンドパレットからインタプリターを選択する
この3ステップだけで仮想環境が切り替わります。
- メニューの「表示」-「コマンドパレット」を選択します
- 「Python:インタプリタを選択」を選ぶ
- 対象の仮想環境を選ぶ
方法2)python.pythonPathの設定を変える
ターミナルで仮想環境を切り替える
py36の環境を適用したいので、下記のコマンドを実行します
activate py36
そこでもう一度先ほどのコマンドを実行すると環境が切り替わっていることが確認できます。
conda info -e
# conda environments: # base C:\Users\ユーザ名\anaconda3 py36 * C:\Users\ユーザ名\anaconda3\envs\py36
ファイル→基本設定→設定を選択する
python.pythonPathへ作成した仮想環境のパスを登録します
先ほどの例で言いますとこちらのパスを設定することになりますね!
C:\Users\ユーザ名\anaconda3\envs\py36
以上が、仮想環境を切り替える方法となります。
ちなみに、
作成した仮想環境を削除するコマンドは次の通り。
conda remove -n 仮想環境の名前 --all
まとめ
いかがでしたでしょうか?
Anacondaの仮想環境でライブラリのバージョンエラーを解消する方法について、お届けしました。
記事がまだショボいのでアップデートしていきます。
「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪
「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪
LINEでのお問合わせも受付中!
LINE公式アカウント
メッセージをお待ちしています!
- 応用情報技術者
- Oracle Master Gold
- Java SE Gold
- Java EE Webコンポーネントディベロッパ
- Python エンジニア認定データ分析
- 簿記2級