【ImportError】VisualStudioCodeでAnacondaの環境が読み込めない時の対処法

今回はVisualStudioCodeでAnaconda等を利用していて発生するエラーについて解説いたします。

Anacondaで仮想環境を作ってVisualStudioCode(以下VSCode)で使ってみようとしたら
ライブラリのインポートの時にエラーが発生してしまった!といった時の対処法です。
Anacondaの仮想環境にはライブラリが入っていることも確認したのに何故…!
と悩んで沼にはまってしまうこともあるかもしれません。
私はそうでした。

なので、この記事で同じような悩みを抱えた方の助けになれば幸いです。

スポンサーリンク
目次

事象

まず、事象の内容が同じか確認してください。
違ったら申し訳ありませんが、再度Google先生に聞くか以下のコメント欄で記載していただければ
私も調べてみようと思いますので、ご連絡いただけると幸いです。

事象は、Anacondaにて作成した仮想環境において、VSCodeからプログラムを実行しようとしたところ、
仮想環境にインストールしたはずのPandas、Numpy等のライブラリをimportして読み込む際に[ImportError]のエラーが発生しライブラリのImportができない、失敗するといった事象です。

具体的なエラー内容は以下の通りです。

例外が発生しました: ImportError

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for many reasons, often due to issues with your setup or how NumPy was installed.

We have compiled some common reasons and troubleshooting tips at: https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

* The Python version is: Python3.8 from “C:\Users\<ユーザー名>\Anaconda3\envs\TestEnv\python.exe”

* The NumPy version is: “1.20.1” and make sure that they are the versions you expect.

Please carefully study the documentation linked above for further help. Original error was: DLL load failed while importing _multiarray_umath: 指定されたモジュールが見つかりません。
During handling of the above exception, another exception occurred: File “C:\Python\estimation.py”, line 6, in <module> import numpy as np

ImportError
実際のエラー画面

このエラーの味噌はただ単純にライブラリをインストールしていない時に現れる
[ModuleNotFoundError]とは違うエラーであるという点です。
つまりライブラリのインストールしているかしていないかによる現象ではないことがわかります。

原因

考えられる原因としては以下の2つかと思います。

・環境変数にてanacondaへのパスが通っていない
・PowerShellでAnacondaが呼び出せない。

恐らくこれらがすべてかなと思います。
これで解決しない場合は、別の事象である可能性が高いです。
また、別の対処方がある場合はご連絡いただけるととてもありがたいです。

対策

主な対策としては2つと、1つの代替手段がありますのでそれをご紹介いたします。

1. 環境変数の未設定

1つ目Anacondaへのパスが通っていないため、仮想環境を呼び出すのがうまくいかず、
ライブラリのインポートの際にエラーとなってしまうということが考えられます。
これの対処法は環境変数にAnacondaのパスを設定してあげるだけです。
やり方は以下の記事の3. 環境変数の設定をご覧ください。

2. PowerShellのAnacondaコマンドの有効化

2つ目はVSCodeでデバッグ実行する際に規定ではPowerShellを使用して
Anacondaのコマンドを自動実行しますが、このPowerShellがAnacondaのコマンドを利用できず
結果として仮想環境の読み込みができずにライブラリの読み込みの際に
インポートエラーとなっていることが考えられます。

Pythonデフォルトコンソール

そのため、PowerShellでもAnacondaコマンドを利用できるように設定します。

1) まずは、Anacondaプロンプトを起動します。
スタートメニューを開き、”Anaconda”と入力し、[Anaconda Prompt(anaconda3)]を選択します。

Anacondaプロンプト

2) コマンドプロンプトのような画面が立ち上がりますので、以下のコマンドを入力し実行します。

conda init powershell

Anacondaプロンプトコンソール

実行後は以下のようになります。

Anacondaプロンプト結果

Anacondaプロンプトでの操作は以上です。

次に、PowerShellを操作します。

3) スタートメニューを開き、”PowerShell”と入力しすれば、PowerShellがヒットするので、
[管理者として実行]で起動します。

WindowsPowerShell

起動すると青色のターミナルが立ち上がるはずです。
環境によっては赤字でエラーメッセージが表示されているかもしれませんが、特に関係しないので無視でよいです。

4) 起動したら、以下のコマンドを入力します。

Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更をほんとにしてよい?って聞かれるので “Y” を入力してください。

PowerShell実行結果

以上で完了です。
実際にVSCodeでエラーとなってしまったプログラムを実行すれば問題なく動作するはずです。

VSCode実行結果

3. VisualStudioCodeの起動ターミナルの切り替え

上記の代替手段…というかPowerShell自体がPythonと相性が悪いみたいなので、起動するときのターミナルをPowerShellではなくコマンドプロンプトに変更することで対応しようという考えです。

1) VSCodeの左下にある歯車ボタンをクリックメニューを開き、[設定(settings)]をクリックします。

VSCode設定

なお、日本語になっているのはVSCodeの日本語化パックをインストールしたので日本語になっています。
詳しいやり方は以下の記事で記載していますので、気になる方はご参照ください。

2) 設定画面が表示されますので、[機能(features)]から[ターミナル(terminal)]を選択します。

ターミナル設定

3) ターミナルの項目をスクロールしていくと中段あたりに
[ntegrated › Automation Shell: Linux]という項目があると思います。
[setting.jsonで編集]というところがクリックできるので、クリックし、[setting.json]を開きます。

setting.json

4) setting.jsonの中身は設定値を変更したりしていると内容が変わります。
ただ、ここでやりたいのは以下の設定値を追加することです。

他の項目の下に追加する場合は、上の項目の最後に”,”を追加しないとエラーになるので注意してください。
また、上記を設定すると環境によっては構文間違ってますよ!って下線が引かれてしまいますが
スルーしてもらってOKです。

設定すると以下のようになります。

setting.json追加内容

5) これで変更を保存して完了です。

なお、これらの対処法を行っても解決しないという方は一度再起動をしてみてください。
再設定が再起動待ちで反映されておらず、エラーが継続して発生している可能性もあります。
正直エラーの発生条件もよくわからないものが多いので、何かしたら再起動してみるというのを
心がけると良いかと思います。

それでも解決しない場合はコメント等でご連絡いただけると幸いです。

私も、原因がわからず、何か適当にやってたらいつの間にか動くようになっていたということが多いので、
これで適切な対策なのかは不安ですが、お役に立てれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる