Visual Studio Codeでnumpyをインポートしようとしたらエラーが出てしまい、解決方法がわからず1~2日ほどを無駄にしてしまいました(笑)
原因はそれほど難しいことではなかったのですが、備忘録として記事にしておきます。
vscodeでnumpyを使おうとしたらエラーがでる
- OS:windows10
- Anaconda3
- エディタ:VSCode
Visual Studio CodeのターミナルからPythonのコードを実行すると、なぜかエラーがでてしまいました。
ところが、なぜかAnacondaプロンプトから実行すると、エラーは出ずにnumpyは普通に読み込める…なんで?
エラーは以下のような感じ。
Traceback (most recent call last): File "c:\Users\user\Anaconda3\envs\research\coef.py", line 4, in <module> import numpy as np File "C:\Users\user\Anaconda3\envs\research\lib\site-packages\numpy\__init__.py", line 142, in <module> from . import core File "C:\Users\user\Anaconda3\envs\research\lib\site-packages\numpy\core\__init__.py", line 71, in <module> raise ImportError(msg) ImportError: IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE! Importing the multiarray numpy extension module failed. Most likely you are trying to import a failed build of numpy. Here is how to proceed: - If you're working with a numpy git repository, try `git clean -xdf` (removes all files not under version control) and rebuild numpy. - If you are simply trying to use the numpy version that you have installed: your installation is broken - please reinstall numpy. - If you have already reinstalled and that did not fix the problem, then: 1. Check that you are using the Python you expect (you're using C:\Users\user\Anaconda3\envs\research\python.exe), and that you have no directories in your PATH or PYTHONPATH that can interfere with the Python and numpy versions you're trying to use. 2. If (1) looks fine, you can open a new issue at https://github.com/numpy/numpy/issues. Please include details on: - how you installed Python - how you installed numpy - your operating system - whether or not you have multiple versions of Python installed - if you built from source, your compiler versions and ideally a build log Note: this error has many possible causes, so please don't comment on an existing issue about this - open a new one instead. Original error was: DLL load failed: 指定されたモジュールが見つかりません。
いや、DLL load failedってなんなん…?
となり、このエラーを調べていくうちに泥沼にはまっていってしまったのですが・・・(笑)
解決方法:PowershellでAnacondaを使えるようにする
結局vscodeでnumpyが使えない理由は、powershellからAnacondaを使えないことが原因でした。
windows powershellとは
windows powershellとはコマンドプロンプトの強化版みたいなものです。
vscodeではデフォルトのターミナルがpowershellに設定されています。
なので、設定を何も変更していなければ、vscodeでpythonのコードを実行したときは、powershellからpythonのコードを実行しているのと同じだ、ということです。
僕もこの辺は詳しいわけではないので、説明があいまいかもしれませんが・・・
powershellでAnacondaを使えるようにする
じゃあ、どうやってpowershellからAnacondaを使えるようにするのか、といったことを簡単に書いていきます。
まずは、Anacondaプロンプトを開き、以下のようにコマンドを入力してください。
(base)C:\Users\user> conda init powershell
Anacondaプロンプトですることは基本的にこれだけです。次はwindows powershellを管理者権限で開きます。
念のため・・・powershellはスタートメニュのところから開けますので。
powershellを開くと以下のように赤文字でエラーっぽいのが出ていると思いますが、おじけづかないでください(笑)
: このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\user\Documents\WindowsPowerShell\profile.p s1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135 170) を参照してください。 発生場所 行:1 文字:3 + . 'C:\Users\int\Documents\WindowsPowerShell\profile.ps1' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : セキュリティ エラー: (: ) []、PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
今からこれを解消していきます。powershellに以下のようにコマンドを入力します
PS C:\Users\user> Set-ExecutionPolicy RemoteSigned 実行ポリシーの変更 実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170) で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"):
コマンドを入力すると、「実行ポリシーの変更~~~」と出てくるので、ここは迷わずYを選択します。
これで、powershellからAnacondaを使えるようになります。試しにAnacondaのcondaから始まるコマンドを何でもいいので実行してみてください。
問題なく使えたら、OKです。
で、これでpowershellからanacondaが使えるようになったので、vscodeからnumpyを読みこんでもエラーがでないはずです。
コメント