前提・実現したいこと
Pythonのvenvを用いて構築した仮想環境にJupyterといくつかのモジュールをインストールしました。
そして、Vscode上でjupyter用のファイル(.ipynb)を作成して開き、pandasをインポートするとモジュールが見つかりませんというエラーが出ます。
Powershell
1python -m venv mp 2mp/Scripts/activate 3(mp)python -V 4Python 3.9.4 5(mp)pip install jupyter pandas numpy matplotlib 6(mp)pip freeze 7argon2-cffi==20.1.0 8async-generator==1.10 9attrs==20.3.0 10autopep8==1.5.6 11backcall==0.2.0 12bleach==3.3.0 13cffi==1.14.5 14colorama==0.4.4 15cycler==0.10.0 16decorator==5.0.6 17defusedxml==0.7.1 18entrypoints==0.3 19ipykernel==5.5.3 20ipython==7.22.0 21ipython-genutils==0.2.0 22ipywidgets==7.6.3 23jedi==0.18.0 24Jinja2==2.11.3 25jsonschema==3.2.0 26jupyter==1.0.0 27jupyter-client==6.1.12 28jupyter-console==6.4.0 29jupyter-core==4.7.1 30jupyterlab-pygments==0.1.2 31jupyterlab-widgets==1.0.0 32kiwisolver==1.3.1 33MarkupSafe==1.1.1 34matplotlib==3.4.1 35mistune==0.8.4 36nbclient==0.5.3 37nbconvert==6.0.7 38nbformat==5.1.3 39nest-asyncio==1.5.1 40notebook==6.3.0 41numpy==1.20.2 42packaging==20.9 43pandas==1.2.3 44pandocfilters==1.4.3 45parso==0.8.2 46pickleshare==0.7.5 47Pillow==8.2.0 48prometheus-client==0.10.0 49prompt-toolkit==3.0.18 50pycodestyle==2.7.0 51pycparser==2.20 52Pygments==2.8.1 53pyparsing==2.4.7 54pyrsistent==0.17.3 55python-dateutil==2.8.1 56pytz==2021.1 57pywin32==300 58pywinpty==0.5.7 59pyzmq==22.0.3 60qtconsole==5.0.3 61QtPy==1.9.0 62Send2Trash==1.5.0 63six==1.15.0 64terminado==0.9.4 65testpath==0.4.4 66toml==0.10.2 67tornado==6.1 68traitlets==5.0.5 69wcwidth==0.2.5 70webencodings==0.5.1 71widgetsnbextension==3.5.1 72 73# 間違いなく仮想環境内にモジュールがインストールされていることを確認 74(mp) pip show pandas 75Name: pandas 76Version: 1.2.3 77Summary: Powerful data structures for data analysis, time series, and statistics 78Home-page: https://pandas.pydata.org 79Author: None 80Author-email: None 81License: BSD 82Location: c:\users\hoge\documents\github\jupyter-project\mp\lib\site-packages 83Requires: python-dateutil, numpy, pytz 84Required-by: 85 86# Jupyter用のファイルを作成 87(mp)New-Item hello.ipynb 88 89# VScodeを起動 90(mp)code .
次に.ipynbファイルを開いて、Jupyterが問題なく起動していることを確認
カーネルもちゃんと読み込まれているし、Pythonのバージョンも3.9.4になっている
発生している問題・エラーメッセージ
この状態で、
hello.ipynb
1import pandas as pd
とし、セルを実行すると
hello.ipynb
1ModuleNotFoundError Traceback (most recent call last) 2<ipython-input-1-7dd3504c366f> in <module> 3----> 1 import pandas as pd 4 5ModuleNotFoundError: No module named 'pandas'
と表示されます。
試したこと
仮想環境上でpythonを実行しパスが通っていることを確認
Powershell
1(mp)python 2Python 3.9.4 (tags/v3.9.4:1f2e308, Apr 4 2021, 13:27:16) [MSC v.1928 64 bit (AMD64)] on win32 3Type "help", "copyright", "credits" or "license" for more information. 4>>>import sys 5>>>sys.path 6>>>['', # 中略 7>>>'C:\Users\hoge\Documents\GitHub\jupyter-project\mp\lib\site-packages']
仮想環境上の設定ファイル .vscode/settings.jsonに以下の記述を追加
settings.json
1{ 2 "python.pythonPath" : "mp\Scripts\python.exe" 3}
- モジュールは間違いなく仮想環境上にインストールされている(グローバルにはインストールされていないことも確認済み)
- パスも通っている
- Python自体はモジュールを認識している
- Jupyterだけがモジュールを認識してくれない
- グローバルにインストールされた外部モジュールは認識している(インポートエラーが出ない)
ちなみに最近PCを新調したんですが、以前まで使っていたPCでは上記と同じ手順で問題なく動いていました。エラーに遭遇することもありませんでした。
以前のPCと1つだけ違う点があります。それはPythonをscoopでインストールしたことです。パスはcurrentに通っています。apps内には3.9.2と3.9.4のpythonがインストールされていますが、currentにパスを通しているので自動的に3.9.4にパスが通り3.9.4が動いているものと自分では認識しています。もしかするとここに問題があるのかとも思いましたが、python自体は問題なく動いているのでやはりjupyterの設定に問題があるものと思います。
かなり調べましたが、多くの人は単にパスが通っていなかったり、インストールされていなかったり、Anacondaの問題だったりで、自分と同じ症状の人を見つけることはできませんでした。
(21:37)追記:
Jupyter上で、
hello.ipynb
1import sys 2sys.path
とするとJupyterに仮想環境内のモジュールへのパスが通っていないことが確認できました。
sys.path.append()
でパスを通すことでモジュールが読み込めるようになりました。
しかし、この方法では新たにJupyterファイルを作成する度に同じ記述をする必要があります。
仮想環境でJupyterをインストールした際に自動的に仮想環境内のモジュールにパスが通るようにしたいです。
以前は何もしなくても仮想環境内のモジュール(mp/Lib/site-packages)にパスが通っていたのに、なぜ新しいPCでは挙動が違うのでしょうか。
何にしろ自力で解決できるかもしれません。お手数おかけしました。
補足情報(FW/ツールのバージョンなど)
windows10 home (20H2)
vscode 1.55.0
python 3.9.4
pip 21.0.1 from c:\users\hoge\documents\github\jupyter-project\mp\lib\site-packages\pip (python 3.9)
jupyter 1.0.0
windows-terminal 1.6.10571.0(Powershellを動かしているターミナルです)
パッケージマネージャーはscoopとchocolateyを併用していますが、開発環境はscoopのみで構築しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。