web-dev-qa-db-ja.com

pip install -r:OSエラー:[Errno 13] Permission denied

私は Django をセットアップしようとしています。

pip install -r requirements.txtを実行すると、次の例外が発生します。

Installing collected packages: amqp, anyjson, arrow, beautifulsoup4, billiard, boto, braintree, celery, cffi, cryptography, Django, Django-bower, Django-braces, Django-celery, Django-crispy-forms, Django-debug-toolbar, Django-disqus, Django-embed-video, Django-filter, Django-merchant, Django-pagination, Django-payments, Django-storages, Django-vote, Django-wysiwyg-redactor, easy-thumbnails, enum34, gnureadline, idna, ipaddress, ipython, kombu, mock, names, ndg-httpsclient, Pillow, pyasn1, pycparser, pycrypto, PyJWT, pyOpenSSL, python-dateutil, pytz, requests, six, sqlparse, stripe, suds-jurko
Cleaning up...
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 283, in run
    requirement_set.install(install_options, global_options, root=options.root_path)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1436, in install
    requirement.install(install_options, global_options, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 672, in install
    self.move_wheel_files(self.source_dir, root=root)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 902, in move_wheel_files
    pycompile=self.pycompile,
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 206, in move_wheel_files
    clobber(source, lib_dir, True)
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 193, in clobber
    os.makedirs(destsubdir)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/amqp-1.4.6.dist-info'

何が問題なのですか。どうすれば解決できますか?

100
RunLoop

オプションa)virtualenvを作成し、それをアクティブにしてインストールします。

virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt

オプションb)あなたの自宅にインストールします。

pip install --user -r requirements.txt

このプロジェクトの要件が他のプロジェクトの要件を妨げないように、私の推奨はsafe(a)オプションを使用します。

54
hectorcanto

pip installSudoを使用することはお勧めできません。最初にpip install --userを試した方がいいです。これが失敗するならば、ここでトップの投稿 を見てください

Sudoを使用してはいけない理由は次のとおりです。

Sudoを指定してpipを実行すると、インターネットから任意のPythonコードをrootユーザーとして実行していることになり、これは非常に大きなセキュリティ上のリスクです。誰かがPyPIに悪意のあるプロジェクトを作成し、それをインストールすると、攻撃者にあなたのマシンへのrootアクセス権を与えることになります。

290
bert

パーミッションを拒否されたlinux(ubuntuベース)の多くの苦痛の後に私にとってうまくいったことを明確にして、そして上のBertの答えから利用するだけで、私は今使っています...

$ pip install --user <package-name>

または要件ファイルでpipを実行している場合...

$ pip install --user -r requirements.txt

そしてこれらは仮想環境の作成を含むあらゆるpipインストールに対して確実に機能します。

しかし、最もクリーンな解決策 私のこれまでの経験では はシステムレベルでpython-virtualenvSudo apt-get installvirtualenvwrapperをインストールすることでした。

次に、仮想環境内で、pip installフラグなしの--user _およびSudoなしの_ を使用します。全体的にはるかにきれいで、安全で、そして簡単です。

25
Thom Ives

許可を得ずにシステム全体のパスにパッケージをインストールしようとしています。

  1. 一般に、システム全体のパスにパッケージをインストールするために、Sudoを使用して一時的に スーパーユーザー permissions 自分の責任で を入手することができます。

    Sudo pip install -r requirements.txt
    

    Sudoについての詳細はこちら をご覧ください。

  2. システム全体を変更したくない場合は、--userフラグを使って per-user パスにパッケージをインストールできます。

    必要なのは、

    pip install --user runloop requirements.txt
    
  3. 最後に、 さらにきめ細かい制御 には、 virtualenv を使用することもできます。あなたは 複数のプロジェクトに取り組んでいます そしてそれぞれの依存関係を追跡したいのです。

    であなたのvirtualenvを起動した後

    $ my-virtualenv/bin/activate

    次のコマンドは、パッケージをvirtualenv内にインストールします(そして、システム全体のパスでnotになります)。

    pip install -r requirements.txt

24
Tobia Tesan

ユーザーはいくつかのPythonインストールパスに対する書き込み権限を持っていません。あなたは許可を与えることができます:

Sudo chown -R $USER /absolute/path/to/directory

それで、あなたは許可を与えなければなりませんそしてあなたがまた許可を与えるべきであるあなたが新しいパスを持っているならば、それをもう一度インストールしようとします:

Sudo chown -R $USER /usr/local/lib/python2.7/
6
Mesut GÜNEŞ

それで、私は全く同じ理由でこれとまったく同じエラーを得ました。完全に独立した、しかし既知の Homebrew + pip bug のおかげで、 この回避策 をGoogleクラウドに掲載しました。ここで、ホームディレクトリに.pydistutils.cfgファイルを作成します。このファイルには、特定のライブラリのインストールに使用することだけが想定されている特別な設定があります。パッケージをインストールした後、そのdisutils.cfgファイルを削除したはずですが、忘れてしまいました。だから私のための修正は実際にはちょうどだった...

rm ~/.pydistutils.cfg

そして、すべてが正常に機能しました。もちろん、本当の理由でそのファイルに何らかの設定がある場合は、そのファイルを単純にrmする必要はありません。しかし、他の誰かがその回避策を実行し、そのファイルを削除するのを忘れた場合、これは私にとっては巧妙なことでした!

0
bwest87