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 8 で Snap から certbot パッケージをインストールする

CentOS 8 で Snap から certbot パッケージをインストールする方法について説明します。

Linux

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

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

Linux

コマンドに対してデフォルトで指定されているオプションを調べる

Linux などの UNIX系OS環境では、コマンドを入力して実行する機会が多いと思いますが、それぞれの環境によって、いくつかのコマンドオプションがデフォルトで指定されている場合があります。 ※ ログ …

Linux

Ubuntu ではユーザー名に大文字が使えません(デフォルトでは)

Ubuntu で ユーザーを追加するには adduser というコマンドを使います。 例えば、”foo” という名前のユーザーを追加するには、以下のコマンドになります。 $ a …

docker

docker run コマンドのパターン覚書

docker run コマンドのパターン覚書です。