先日、急にVSCODE上でpython モジュールであるpyqueryがimport出来なくなった事象が発生。エラー内容としては以下のようになる。
Traceback (most recent call last):
File "c:\Users\name\Documents\excel_python\python_prg\today_stockinfo_toDB.py", line 1, in <module>
from pyquery import PyQuery
File "D:\Anaconda3\lib\site-packages\pyquery\__init__.py", line 7, in <module>
from .pyquery import PyQuery # NOQA
File "D:\Anaconda3\lib\site-packages\pyquery\pyquery.py", line 11, in <module>
from lxml import etree
ImportError: DLL load failed: 指定されたモジュールが見つかりません。
PS C:\Users\name\Documents\excel_python\python_prg> conda activate base
ただし、jupyterlab上では問題なくpyqueryのimporetが出来たので原因を探っていく次第。
まず、vscode上でモジュールが存在するかどうかを確認する。
$ py -m pip list
・
・
・
・
pyquery 1.4.1
ありました。
次に、このpyqueryがどこに保存されているのかそのパスの確認を行います。
$ py -m pip show pyquery
・
・
・
Location: d:\anaconda3\lib\site-packages
このパスに存在していることまで確認が取れました。
続いてJupyterLab上で周回しているpathとVSCODE上で周回しているpathを見比べます。
まずはjupyterlabのもの
import sys
sys.path
['C:\\Users\\name\\Documents\\excel_python\\python_prg',
'D:\\Anaconda3\\python37.zip',
'D:\\Anaconda3\\DLLs',
'D:\\Anaconda3\\lib',
'D:\\Anaconda3',
'',
'D:\\Anaconda3\\lib\\site-packages',
'D:\\Anaconda3\\lib\\site-packages\\win32',
'D:\\Anaconda3\\lib\\site-packages\\win32\\lib',
'D:\\Anaconda3\\lib\\site-packages\\Pythonwin',
'D:\\Anaconda3\\lib\\site-packages\\IPython\\extensions',
'C:\\Users\\name\\.ipython']
d:\anaconda3\lib\site-packagesは含まれています。
続いてVSCODE上のもの
import sys
sys.path
'c:\\Users\\name\\Documents\\excel_python\\python_prg',
'D:\\Anaconda3\\python37.zip',
'D:\\Anaconda3\\DLLs',
'D:\\Anaconda3\\lib',
'D:\\Anaconda3',
'D:\\Anaconda3\\lib\\site-packages',
'D:\\Anaconda3\\lib\\site-packages\\win32',
'D:\\Anaconda3\\lib\\site-packages\\win32\\lib',
'D:\\Anaconda3\\lib\\site-packages\\Pythonwin']
おや、どちらもd:\anaconda3\lib\site-packagesは含まれています。
おかしい、pyqueryは存在し、どちらもpathは通っているのにjupyterlab上は
起動できてvscode上は起動できないのか
ここにきてお手上げ、試しにVSCODEで通っていないパス 'D:\Anaconda3\lib\site-packages\IPython\extensions','C:\Users\name\.ipython'の二つをvscodeでも
追加してみましたが、症状に改善見られず。しばらくpyqueryを使うときはjupyterlab上で使用するのを余儀なくされそうです。