Linux

pip install でインストールしたパッケージを使おうとするエラーが発生する

投稿日:2019年5月15日 更新日:

1. はじめに

以下のコマンドで、Python のパッケージをシステムにインストールしたとします。

$ sudo pip install {パッケージ名}

環境によって違いますが、パッケージは /usr/local/lib/python2.7/ といったディレクトリにインストールされます(Python のバージョンが 2.7 の場合)。

このとき、インストール先のディレクトリやファイルに「管理者しかアクセスできない」パーミッションがセットされることがあります(環境に依ると思いますが)。

そうなると、一般ユーザーでこのパッケージを使う操作を実行しようとすると当然エラーが発生します。 本記事では、こういった場合の対処方法を紹介します。

2. 環境

  • OS: Ubuntu 18.04
  • Python 2.7 (apt コマンドでインストール)

3. 対処方法

インストールしたパッケージに対し、一般ユーザーでもアクセスできるようなパーミッション設定を行います。

Ubuntu の場合、sudo pip install コマンドでインストールしたパッケージは、/usr/local/lib/python2.7 以下にインストールされるので、このディレクトリに対して以下のコマンドを実行します(ついでに、/usr/lib/python2.7/ にも同じ操作を行います)。

$ sudo chmod -R go+rX /usr/local/lib/python2.7/
$ sudo chmod -R go+rX /usr/lib/python2.7/
  • ディレクトリのパーミッション: グループとその他のユーザーに対して「読み取り(r)」と「その中へのアクセスを許可する(x)」を与えています。
  • ファイルのパーミッション: グループとその他のユーザーに対して「読み取り(r)」を与えています。

パッケージに含まれるファイルの場所を調べる

特定のパッケージのファイルがどこにインストールされたのか知りたい場合は、以下のコマンドで表示することができます。
$ pip show -f {パッケージ名}
表示されたファイルのパーミッションを確認しておきましょう。

4. おわりに

一般ユーザーが使うパッケージをインストールする場合は、--user オプションを指定しておくのがよいです。こちらであれば、そのユーザーのホームディレクトリ以下(~/.local/ など)にインストールされるため、今回のようなパーミッションの問題は起こりにくいです。

$ pip install --user {パッケージ名}

一度、お試しください。

📂-Linux
-

執筆者:labo


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Linux

テキストファイル内の行毎に、特定の箇所を抽出する

ファイル内の行毎に、特定の箇所を抽出する方法を紹介します。

CentOS

CentOS 6 で yum update した時、remi-php70 レポジトリ内のパッケージの依存性解決ができない場合の解決方法

目次現象解決方法 その1解決方法 その2解決方法 その3まとめ参考 現象 remi-php70 リポジトリを使っている CentOS 6 の環境で PHP関連のパッケージを更新しようと思い、以下のコマ …

Linux

ラベル行のある複数ファイルを1ファイルにマージするコマンド

ラベル行のある複数ファイルをマージするコマンドを紹介します。

Linux

【Ubuntu】pip install –upgrade pip コマンドを実行すると、その後、ImportError: cannot import name main というエラーが発生する場合の対応方法

「pip install –upgrade pip」コマンドを実行した後、pip コマンドを実行すると「ImportError: cannot import name main」というエラーが発生す …

Let's Encrypt

Let’s Encrypt を使ってみました

無料でSSL証明書が発行できる Let’s Encrypt を使ってみました。 その時の操作手順を紹介します。 本記事執筆時に存在していた「Let’s Encrypt 総合ポー …