pip install -r requirements.txt
falha com a exceção abaixo OSError: [Errno 13] Permission denied: '/usr/local/lib/...
. O que há de errado e como faço para corrigir isso? (Estou tentando configurar o Django )
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'
python
permissions
pip
install
RunLoop
fonte
fonte
Respostas:
Opção a) Crie uma virtualenv, ative-a e instale:
Opção b) Instale no seu homedir:
Minha recomendação usa a opção safe (a), para que os requisitos deste projeto não interfiram com os outros requisitos do projeto.
fonte
sudo:pip: command not found
na minha instância do aws ec2 ao executar este comando. Por favor ajude.sudo
aconselhar. mesmo que funcione agora, isso lhe dará muitas dores de cabeça no futuro.Deveríamos realmente parar de aconselhar o uso de
sudo
withpip install
. É melhor tentar primeiropip install --user
. Se isso falhar, dê uma olhada no post superior aqui .O motivo pelo qual você não deve usar
sudo
é o seguinte:Ao executar o pip
sudo
, você está executando um código Python arbitrário da Internet como usuário root, o que representa um grande risco à segurança. Se alguém colocar um projeto mal-intencionado no PyPI e você o instalar, você concederá a um invasor acesso root à sua máquina.fonte
sudo x install
, para todosx
(inclusivex = make
).--user
instala o pacote no diretório inicial, em vez da raiz. A instalação de algo neste local não requer privilégios extras.sudo
foram removidas há um ano. Esta resposta está obsoleta - revise e atualize-a. Você também precisa mencionar as instalações e permissões por usuário versus todo o sistema. Não use sua resposta para criticar diretamente outras respostas, que tendem a se tornar obsoletas rapidamente.Você está tentando instalar um pacote no caminho do sistema sem ter permissão para fazê-lo.
Em geral, você pode usarsudo
para obter temporariamente permissões de superusuário sob sua responsabilidade , a fim de instalar o pacote no caminho do sistema:Saiba maissudo
aqui .Na verdade, essa é uma péssima idéia e não há um bom caso de uso para isso, consulte o comentário de @ wim.
Se você não quiser fazer alterações em todo o sistema, poderá instalar o pacote no caminho por usuário usando o
--user
sinalizadorTudo o que precisamos é:
Por fim, para um controle ainda mais refinado , você também pode usar um virtualenv , que pode ser a solução superior para um ambiente de desenvolvimento, especialmente se você estiver trabalhando em vários projetos e quiser acompanhar as dependências de cada um.
Depois de ativar seu virtualenv com
$ my-virtualenv/bin/activate
o seguinte comando instalará o pacote dentro do virtualenv (e não no caminho do sistema):
pip install -r requirements.txt
fonte
pyenv/pipenv
, devemos mencioná-los, de preferência avirtualenv
(ouconda-env
) b) sudo considerado prejudicial e ver as outras respostas. Portanto, coloque a resposta baseada em env primeiro e o sudo por último, com um grande aviso.sudo pip install -r requirements.txt
nunca está certo. O ambiente python do sistema pertence ao sistema, ponto final . Se você instalar mais coisas python para o sistema, fazê-lo com o gerenciador de pacotes única (por exemplosudo yum install
,apt-get
, etc ...) desde que esses acordos de recompra deve ter versões seguras e compatíveis de bibliotecas vão.sudo make install
, geralmente compilado + vinculado, não é realmente análogo a um,sudo pip install
pois a instalação no sistema Python env pode invalidar dependências . Suponha que exista um serviço de sistemapython-frobnicator
que dependafroblib
(isso também estará no gerenciador de pacotes e fixado em uma versão compatível) e, em seguida, vocêsudo pip install
algum outro aplicativo ou lib que dependa de "froblib > 1.2
". O Pip alegremente "atualizará" a versão do sistemafroblib
com uma versão mais nova, que pode ser incompatível / não testada e quebrará o sistema.Apenas esclarecendo o que funcionou para mim depois de muita dor no linux (baseado no ubuntu) devido a erros de permissão negada e aproveitando a resposta de Bert acima, agora uso ...
ou se estiver executando o pip em um arquivo de requisitos ...
e eles funcionam de maneira confiável para cada instalação de pip, incluindo a criação de ambientes virtuais.
No entanto, a solução mais limpa no meu mais experiência tem sido a de instalar
python-virtualenv
evirtualenvwrapper
comsudo apt-get install
no nível do sistema.Em ambientes virtuais, use
pip install
sem o--user
sinalizador AND semsudo
. Muito mais limpo, seguro e fácil no geral.fonte
pip install --user -r requirements.txt
O usuário não tem permissão de gravação para alguns caminhos de instalação do Python. Você pode dar a permissão por:
Portanto, você deve dar permissão e tentar instalá-lo novamente, se você tiver novos caminhos, também deverá dar permissão:
fonte
/usr
normalmente pertencem à raiz hoje em dia. Recursivamente chowning lá poderia estragar o seu sistema. EVITAR .Se você precisar de permissões, não poderá usar 'pip' com 'sudo'. Você pode fazer um truque, para poder usar o 'sudo' e instalar o pacote. Basta colocar 'sudo python -m ...' na frente do seu comando pip.
fonte
Então, eu recebi o mesmo erro exato por um motivo completamente diferente. Devido a um bug Homebrew + pip totalmente separado, mas conhecido , eu segui esta solução alternativa listada nos documentos de ajuda do Google Cloud, onde você cria um arquivo .pydistutils.cfg em seu diretório pessoal. Este arquivo possui uma configuração especial que você deve usar apenas para a instalação de determinadas bibliotecas. Eu deveria ter removido esse arquivo disutils.cfg depois de instalar os pacotes, mas esqueci de fazê-lo. Então a solução para mim foi realmente ...
rm ~/.pydistutils.cfg
.E então tudo funcionou normalmente. Obviamente, se você tiver alguma configuração nesse arquivo por um motivo real, não desejará apenas controlá-lo diretamente. Mas, caso alguém fizesse essa solução alternativa e se esquecesse de remover esse arquivo, isso funcionou para mim!
fonte
É devido problema de permissão,
padrão seria
/usr/local/lib/python2.7/
ou tente,
e então diga,
pip install -r requirements.txt
isso será instalado dentro do seu ambientenão diga,
sudo pip install -r requirements.txt
isso é instalado no caminho arbitrário do python.fonte