事象 : ModuleNotFoundError: No module named 'apiclient'
- 環境
- AWS Cloud9
- Python 3.7.9
GoogleAnalyticsAPIでどんな情報が取れるか見てみたかった。
はじめてのアナリティクス Reporting API v4: サービス アカウント向け Python クイックスタート
で「くいっく」に「すたーと」したかった。
ライブラリをインストールしてダウンロードしたソースを実行して・・・「すたーと」できなかった。
Traceback (most recent call last):
File "/home/ec2-user/environment/HelloAnalytics.py", line 3, in <module>
from apiclient.discovery import build
ModuleNotFoundError: No module named 'apiclient'
Process exited with code: 0
原因 : ライブラリを違うところにインストールしているから
ライブラリをインストールしたのに・・・と思ってじっと見つめると「/usr/lib/python2.7」の文字が・・・なぜ?
$ sudo pip install --upgrade google-api-python-client
...省略...
Requirement already up-to-date: six<2dev,>=1.13.0 in /usr/lib/python2.7/site-packages (from google-api-python-client)
...省略...
Successfully installed cachetools-3.1.1 certifi-2020.12.5 chardet-4.0.0 google-api-core-1.26.1 google-api-python-client-1.12.8 google-auth-1.27.1 google-auth-httplib2-0.1.0 googleapis-common-protos-1.52.0 httplib2-0.19.0 idna-2.10 packaging-20.9 protobuf-3.15.6 pyasn1-modules-0.2.8 pyparsing-2.4.7 requests-2.25.1 uritemplate-3.0.1 urllib3-1.26.4
# 使っているPython3.7の場所はこっち
$ which python
alias python='python3'
/usr/bin/python3
アホみたいに使っている環境も考えずにコピペ実行したことが問題。
- 通常のインストール:pip install numpy
- user install:pip install --user numpy
これらの違いはパッケージがインストールされるディレクトリである.通常のインストールでは,管理者権限が必要な /usr 下に,user install では管理者権限の必要ないホームディレクトリ下の ~/.local(ベースバイナリディレクトリという) 下にパッケージがインストールされる.
Python:pip における管理者権限と user install - pyてよn日記
対応 : --userオプションで使っているPythonにインストールする
$ python -m pip install --user --upgrade google-api-python-client
...省略...
Requirement already up-to-date: six<2dev,>=1.13.0 in /usr/local/lib/python3.7/site-packages (from google-api-python-client)
...省略...
Successfully installed cachetools-4.2.1 certifi-2020.12.5 chardet-4.0.0 google-api-core-1.26.1 google-api-python-client-2.0.2 google-auth-1.27.1 google-auth-httplib2-0.1.0 googleapis-common-protos-1.53.0 httplib2-0.19.0 idna-2.10 packaging-20.9 protobuf-3.15.6 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-2.4.7 requests-2.25.1 rsa-4.7.2 setuptools-54.1.2 uritemplate-3.0.1 urllib3-1.26.4
$
めでたく次のエラーに移行し、
Traceback (most recent call last):
File "/home/ec2-user/environment/HelloAnalytics.py", line 4, in <module>
from oauth2client.service_account import ServiceAccountCredentials
ModuleNotFoundError: No module named 'oauth2client'
Process exited with code: 0
足りないライブラリをインストールして、
$ python -m pip install --user --upgrade oauth2client
微妙な「くいっく」で「すたーと」した。
ga:country: Hong Kong
Date range: 0
ga:sessions: 1
ga:country: Japan
Date range: 0
ga:sessions: 113
ga:country: United States
Date range: 0
ga:sessions: 1
Process exited with code: 0
事象 : No module named ikp3db
テンプレートしかないLambda関数をCloud9で実行したらなんか言われた
/home/ec2-user/.pyenv/versions/3.8.7/bin/python3: No module named ikp3db
To use python debugger install ikpdb by running:
sudo yum update;
sudo yum install python36-devel;
sudo pip-3.6 install ikp3db;
Process exited with code: 0
原因 : Cloud9のデバックにはikp3dbが必要だから
そういえば似たようなことが以前あったなぁ
今回はPython3.8なのでIKPdbではなくIKP3dbを使います。
IKP3db is a Python 3 debugger. For Python 2 see the IKPdb project on github and pypi.
ikp3db · PyPI
対応 : 仮想環境の外でikp3dbをインストールする
仮想環境の中でインストールしてもうまくいかなかったが、仮想環境の外でインストールしたらうまくいった。
$ pip install ikp3db
Collecting ikp3db
Using cached ikp3db-1.4.1.tar.gz (24 kB)
Using legacy 'setup.py install' for ikp3db, since package 'wheel' is not installed.
Installing collected packages: ikp3db
Running setup.py install for ikp3db ... done
Successfully installed ikp3db-1.4.1
$ python -m pip list
Package Version
---------- -------
ikp3db 1.4.1
pip 20.2.3
setuptools 49.2.1
事象 : ModuleNotFoundError: No module named 'requests'
LambdaをCloud9の環境で実行したら怒られた
Traceback (most recent call last):
File "/home/ec2-user/environment/backlog_none_assignee/lambda_function.py", line 2, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
Process exited with code: 0
いろいろ確認してみる
# インストールされているか確認する > イントールされている
(venv) $ pip list
Package Version
---------- ---------
...省略...
requests 2.25.1
...省略...
# インストールされている場所を確認する
(venv) $ pip show requests
...省略...
Location: /home/ec2-user/environment/backlog_none_assignee/venv/lib/python3.8/site-packages
...省略...
# Pythonがモジュールを探す場所に上記のインストール場所が含まれているかを確認する > 含まれている
(venv) $ python
...省略...
>>> import sys
>>> sys.path
['', ...省略..., '/home/ec2-user/environment/backlog_none_assignee/venv/lib/python3.8/site-packages']
>>>
# 試しに単体で使ってみると・・・エラーにならない
>>> import requests
>>>
原因 : 実行時の設定がAutoだから
参考 : AWS Cloud9 Integrated Development Environment (IDE) のビルダー、ランナー、デバッガーの操作 - AWS Cloud9
真の原因はよくわかんないのにポチッと[Run]を押したことですね。