boto3
を使ってデプロイスクリプトを作成していたら、インストールされているはずのboto3
が読み込みできないというエラーが発生
$ python3 test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
import boto3
ModuleNotFoundError: No module named 'boto3'
確認してみると、やはりしっかりとインストールされている
$ pip3 show boto3
Name: boto3
Version: 1.14.34
Summary: The AWS SDK for Python
Home-page: https://github.com/boto/boto3
Author: Amazon Web Services
Author-email: UNKNOWN
License: Apache License 2.0
Location: /usr/local/lib/python3.7/site-packages
Requires: botocore, jmespath, s3transfer
Required-by:
モジュール読み込みパスが足りていないじゃないのかと疑い、以下のスクリプトを作成し確認
import sys
import pprint
pprint.pprint(sys.path)
やはりLocation: /usr/local/lib/python3.7/site-packages
がないことが判明
['/Users/{USERNAME}/.ghq/repository_path',
'/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python37.zip',
'/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7',
'/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/lib-dynload',
'/Users/{USERNAME}/Library/Python/3.7/lib/python/site-packages',
'/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site-packages']
なんでこんなことが起こるのかまでは調べられてないけど、とりあえず、環境変数PYTHONPATH
にLocationで表示されたパスを追加したらエラーは出なくなったのでよしとしようw
export PYTHONPATH='/usr/local/lib/python3.7/site-packages:$PYTHONPATH'
後日談
python2系を動かすとエラーとなってしまったので、やはり根本解決にはなっていない模様
Your PYTHONPATH points to a site-packages dir for Python 3.x but you are running Python 2.x!
PYTHONPATH is currently: "/usr/local/lib/python3.7/site-packages:$PYTHONPATH"
You should `unset PYTHONPATH` to fix this.