私は 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'
何が問題なのですか。どうすれば解決できますか?
オプションa)virtualenvを作成し、それをアクティブにしてインストールします。
virtualenv .venv
source .venv/bin/activate
pip install -r requirements.txt
オプションb)あなたの自宅にインストールします。
pip install --user -r requirements.txt
このプロジェクトの要件が他のプロジェクトの要件を妨げないように、私の推奨はsafe(a)オプションを使用します。
pip install
でSudo
を使用することはお勧めできません。最初にpip install --user
を試した方がいいです。これが失敗するならば、ここでトップの投稿 を見てください 。
Sudo
を使用してはいけない理由は次のとおりです。
Sudo
を指定してpipを実行すると、インターネットから任意のPythonコードをrootユーザーとして実行していることになり、これは非常に大きなセキュリティ上のリスクです。誰かがPyPIに悪意のあるプロジェクトを作成し、それをインストールすると、攻撃者にあなたのマシンへのrootアクセス権を与えることになります。
パーミッションを拒否されたlinux(ubuntuベース)の多くの苦痛の後に私にとってうまくいったことを明確にして、そして上のBertの答えから利用するだけで、私は今使っています...
$ pip install --user <package-name>
または要件ファイルでpipを実行している場合...
$ pip install --user -r requirements.txt
そしてこれらは仮想環境の作成を含むあらゆるpipインストールに対して確実に機能します。
しかし、最もクリーンな解決策 私のこれまでの経験では はシステムレベルでpython-virtualenv
とSudo apt-get install
とvirtualenvwrapper
をインストールすることでした。
次に、仮想環境内で、pip install
フラグなしの--user
、 _およびSudo
なしの_ を使用します。全体的にはるかにきれいで、安全で、そして簡単です。
許可を得ずにシステム全体のパスにパッケージをインストールしようとしています。
一般に、システム全体のパスにパッケージをインストールするために、Sudo
を使用して一時的に スーパーユーザー permissions 自分の責任で を入手することができます。
Sudo pip install -r requirements.txt
Sudo
についての詳細はこちら をご覧ください。
システム全体を変更したくない場合は、--user
フラグを使って per-user パスにパッケージをインストールできます。
必要なのは、
pip install --user runloop requirements.txt
最後に、 さらにきめ細かい制御 には、 virtualenv を使用することもできます。あなたは 複数のプロジェクトに取り組んでいます そしてそれぞれの依存関係を追跡したいのです。
であなたのvirtualenvを起動した後
$ my-virtualenv/bin/activate
次のコマンドは、パッケージをvirtualenv内にインストールします(そして、システム全体のパスでnotになります)。
pip install -r requirements.txt
ユーザーはいくつかのPythonインストールパスに対する書き込み権限を持っていません。あなたは許可を与えることができます:
Sudo chown -R $USER /absolute/path/to/directory
それで、あなたは許可を与えなければなりませんそしてあなたがまた許可を与えるべきであるあなたが新しいパスを持っているならば、それをもう一度インストールしようとします:
Sudo chown -R $USER /usr/local/lib/python2.7/
それで、私は全く同じ理由でこれとまったく同じエラーを得ました。完全に独立した、しかし既知の Homebrew + pip bug のおかげで、 この回避策 をGoogleクラウドに掲載しました。ここで、ホームディレクトリに.pydistutils.cfgファイルを作成します。このファイルには、特定のライブラリのインストールに使用することだけが想定されている特別な設定があります。パッケージをインストールした後、そのdisutils.cfgファイルを削除したはずですが、忘れてしまいました。だから私のための修正は実際にはちょうどだった...
rm ~/.pydistutils.cfg
。
そして、すべてが正常に機能しました。もちろん、本当の理由でそのファイルに何らかの設定がある場合は、そのファイルを単純にrmする必要はありません。しかし、他の誰かがその回避策を実行し、そのファイルを削除するのを忘れた場合、これは私にとっては巧妙なことでした!