LoginSignup
4
2

More than 5 years have passed since last update.

pip installに成功したのに、読み込みに失敗するライブラリの解決方法

Last updated at Posted at 2018-06-29

これなに?

pip installが成功しているにも関わらず、ライブラリとしてロードされないケースがあったので、その解決方法について。Amazon Linux AMIの問題みたいです。

環境

Amazon Lambdaの開発環境です。

  • Amazon EC2 Linux (AMI: Amazon Linux AMI 2018.03.0.20180508 x86_64 HVM)
  • Python 3.6.5
    • このAMIのプリインストールはPython 2.7なので、yumで追加installしています
  • VirtualEnv

症状

pip showしても、インストールしたライブラリが表示されない。
この状態で当該ライブラリをimportしようとするとModuleNotFoundError: No module named 'xxxx'となる。

インストール
$ pip --no-cache-dir install pyminizip
Collecting pyminizip
Installing collected packages: pyminizip
Successfully installed pyminizip-0.2.3
インストール結果の確認。認識されていない。
$ pip show pyminizip
$ 

解決策

ここに詳しく書かれているが、Amazon Linux AMIではpythonのライブラリの読込先(sys.path)として、/lib/だけが設定されてしまっている。
一方で、ライブラリによっては/lib64/にインストールされるものがあり、/lib64/を読込先として追加してあげないとダメだね、というオチ。

一時的なテストなら環境変数$PYTHONPATHに追加すればOK。永続的にこのライブラリを使うのであれば、.pthファイルを利用する。以下は、.pthを追加した場合。

.pthファイルの作成
$ echo /home/ec2-user/yourVirtualEnv/lib64/python3.6/dist-packages > /home/ec2-user/yourVirtualEnv/lib/python3.6/dist-packages/mypath.pth
$ cat mypath.pth
/home/ec2-user/yourVirtualEnv/lib64/python3.6/dist-packages
確認
$ pip show pyminizip
Name: pyminizip
Version: 0.2.3
Summary: A minizip wrapper - To create a password encrypted zip file in python.
Home-page: https://github.com/smihica/pyminizip
Author: Shin Aoyama
Author-email: smihica@gmail.com
License: UNKNOWN
Location: /home/ec2-user/encryptfile/lib64/python3.6/dist-packages
Requires:
Required-by:
$ 

参考にしたページ

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2