tweepyを使ってapi叩こうと思ったが、インストールしてもmoduleが見つからないエラーに遭遇した。
ModuleNotFoundError: no module named “tweepy”
そのときの対処法を備忘録として残す。
やりたいこと
import tweepy でtweepyのライブラリを使える状態にすること。
エラーになった原因と解決方法
pip intall tweepyでインストール完了したのに、VsCodeで実行ボタンを押すと以下のようなエラーに直面した。
ModuleNotFoundError: No module named 'tweepy'
モジュールが見つからないエラーは頻繁に起こる。まず、本当にインストールされているかチェックしてみる。
$ pip list
Package Version
------------------- ---------
asgiref 3.4.1
certifi 2021.5.30
charset-normalizer 2.0.4
Django 3.2.6
djangorestframework 3.12.4
idna 3.2
oauthlib 3.1.1
pip 21.2.4
PySocks 1.7.1
pytz 2021.1
requests 2.26.0
requests-oauthlib 1.3.0
setuptools 56.0.0
six 1.16.0
sqlparse 0.4.1
tweepy 3.10.0
urllib3 1.26.6
tweepyがちゃんと入ってる。
次はtweepyがどのパスに存在しているのか確認してみる。もしかすると環境変数PATHとは違うところを探している可能性があるからだ。
$ pip show tweepy
Name: tweepy
Version: 3.10.0
Summary: Twitter library for Python
Home-page: <https://www.tweepy.org/>
Author: Joshua Roesslein
Author-email: tweepy@googlegroups.com
License: MIT
Location: c:\\users\\juvenile0712\\appdata\\local\\programs\\python\\python39\\lib\\site-packages
Requires: six, requests, requests-oauthlib
Required-by:
Locationの部分に注目するとtweepyモジュールが存在するパスが分かる。このパスはどこかにメモっておこう。環境変数PATH設定で利用するからだ。
次はpythonがモジュールを探しにいくパスは何なのか見てみる。
import sys
import pprint
pprint.pprint(sys.path)
['',
'C:\\\\Program '
'Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\\\\python39.zip',
'C:\\\\Program '
'Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\\\\DLLs',
'C:\\\\Program '
'Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\\\\lib',
'C:\\\\Users\\\\Juvenile0712\\\\AppData\\\\Local\\\\Microsoft\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0',
'C:\\\\Users\\\\Juvenile0712\\\\AppData\\\\Local\\\\Packages\\\\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\\\\LocalCache\\\\local-packages\\\\Python39\\\\site-packages',
'C:\\\\Program '
'Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0',
'C:\\\\Program '
'Files\\\\WindowsApps\\\\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\\\\lib\\\\site-packages']
先ほどメモしたパスと合っているだろうか。恐らく違っているからモジュールが見つからないとエラーが吐かれているのだと思う。なので環境PATH設定を変更してみる。
実際に環境変数にPATHを追加したが、これでもエラーが治らない。なぜなのか、もう少し調べてみることにした。
するとPython2系3系に関するブログが出てきた。そこによると、モジュールがどのpython系にインストールされたかで意図しない結果が返ってくるとのこと。
そもそもVsCodeで実行ボタンを押すとということはすなわち、Python3系で実行しているということ。つまり以下のコマンドを実行していることに等しい。
python3 test.py
これでmodulenotfoundエラーが出てくるということは、おそらくtweepyをインストールするときにpython2系にインストールしてしまった可能性が高い。ということで、python2系で実行してみることに。
python test.py
これで無事、実行された。
なぜ、自力で解決できなかったのか
- moduleがどこにインストールされているのかを意識していなかった
- Vscodeの実行ボタンの意味を知らなかった
- python2,3系の違いで処理が違うことを知らなかった