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

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

関連記事

CentOS

CentOS Stream 8 の PHP 7.2 を 7.4 に変更する

CentOS Stream 8 の PHP 7.2 を 7.4 に変更する作業について説明します。

CentOS

CentOS 6 での yum update エラーに対応しました

問題 先日、CentOS 6.9 で yum update したところ、以下のエラーが発生しました。 https://ca.mirror.babylon.network/remi/enterprise …

Linux

「よく使うコマンドランキングの表示」を1つのコマンドにする

目次1. はじめに2. 入力が面倒なコマンドを新たなコマンド(今回は関数)にする3. 作成した関数の実行4. コマンドの引数も合わせて調べたい5. 履歴のフォーマットが異なる場合6. まとめ 1. は …

Linux

umask によって適用されるパーミッションの確認ページを作成しました

Linux (や Mac) では、ファイルやディレクトリに「パーミッション」を設定することでアクセスを制限します。 パーミッションは、「所有者」「所有グループ」「その他」の3者に対して、 ファイルなら …

SELinux

Webサーバーがサイトの構成ファイルを上書きできない問題に対応する(SELinuxが原因の場合)

目次1. はじめに2. 前提3. CentOS 7 の SELinux4. 対応手順5. おわりに参考 1. はじめに Webサイトによっては、そのWebサイトを構成しているファイルを自分で更新する場 …