pip install: Verifique as permissões e o proprietário desse diretório

155

Ao instalar o pip e o python, encontrei um que diz:

O diretório '/ Users / Parthenon / Library / Logs / pi' ou seu diretório pai não é de propriedade do usuário atual e o log de depuração foi desativado. Por favor, verifique as permissões e o proprietário desse diretório. Se estiver executando o pip com o sudo, convém o sinalizador -H.

porque agora tenho que instalar usando sudo.

Eu tinha python e um punhado de bibliotecas já instaladas no meu Mac, estou executando o Yosemite. Recentemente, tive que fazer uma limpeza limpa e reinstalar o sistema operacional. Agora estou recebendo esse aviso e estou tendo problemas para descobrir como alterá-lo

Antes da minha linha de comando Parthenon$agora éPhilips-MBP:~ Parthenon$

Eu sou o único proprietário deste computador e esta é a única conta nele. Isso parece ser um problema ao atualizar para o python 3.4, nada parece estar no lugar certo, o virtualenv não está indo para o que eu esperava etc.

Phil Andrews
fonte
O seu nome da conta é Philip?
komaromy
Acabei de perceber isso acontecendo ao usar o pip na minha própria máquina ontem, o que você quer dizer com virtualenv não está indo para onde você espera?
Padraic Cunningham
Eu instalei o Python 3.4 na minha máquina, mas quando executo o python no meu terminal, ele ainda executa o 2.7, mesmo depois de todo o processo de instalação. Eu só mencionou virtualenv porque eu normalmente esperar para encontrá-lo na Biblioteca / Python / 3.4, mas não há Library / Python / 3.4
Phil Andrews
você precisa usar algo como python3 ou python3.4 para usar o interpretador python3, os itens que estão sendo reabertos são apenas uma configuração, o ubuntu tem a mesma opção.
Padraic Cunningham
@PadraicCunningham você está tendo o mesmo problema de pip? Você atualizou recentemente para Yosemite?
Phil Andrews

Respostas:

127

Eu também vi essa alteração no meu Mac quando fui de executar pippara sudo pip. Adicionar -Hao sudo faz com que a mensagem desapareça para mim. Por exemplo

sudo -H pip install foo

man sudodiz-me que -Hfaz sudocom que seja definido $HOMEpara os usuários de destino (neste caso, raiz).

Parece que o pip está investigando $HOME/Library/Loge, sudopor padrão, não está definido $HOMEcomo /root/. Não surpreendentemente ~/Library/Log, você pertence a você como usuário, e não como root.

Eu suspeito que esta é uma mudança recente no pip. Vou executá-lo sudo -Hpor enquanto para contornar.

Von
fonte
18
Observe que o uso sudo pipé totalmente incorreto. Para obter mais informações, consulte aqui stackoverflow.com/questions/33004708/…
Mikko Ohtamaa
Eu tive o mesmo problema, mas sim, agora tenho que instalar usando o sinalizador "-H".
Malachi Bazar
62

Qual é o problema aqui é que você de alguma forma instalou no virtualenv usando sudo. Provavelmente por acidente. Isso significa que o rootusuário reescreverá os dados do pacote Python, tornando todos os arquivos pertencentes ao root e o usuário normal não poderá mais gravá-los. Geralmente, o virtualenv deve ser usado e pertencer apenas ao seu usuário UNIX normal.

Você pode corrigir o problema alterando o pacote de permissões de arquivo UNIX para seu usuário. Experimentar:

$ sudo chown -R USERNAME /Users/USERNAME/Library/Logs/pip
$ sudo chown -R USERNAME /Users/USERNAME/Library/Caches/pip

então pipdeve poder gravar esses arquivos novamente.

Mais informações sobre gerenciamento de permissão de arquivo UNIX

Mikko Ohtamaa
fonte
Pip ainda escreve com o erro. Também tenho um aviso semelhante e minhas permissões estão corretas, o OP não está realmente usando um virtualenv, portanto, faria sentido que a instalação de pacotes globalmente exigiria o sudo.
Padraic Cunningham
1
@PadraicCunningham: Se o pip der um erro de que suas permissões estão incorretas, mostre suas permissões de arquivo, para que possamos descobrir o que há de errado com elas. Caso contrário, ajudar seria um tiro no escuro.
Mikko Ohtamaa
Sugiro também que você abra outra pergunta, pois seu problema pode ser diferente do que o autor original possui
Mikko Ohtamaa
Usando meu próprio nome de usuário, recebi um erro: Entrada: sudo chown -R USERNAME / Usuários / USERNAME / Biblioteca / Logs / pip Saída: chown: / Usuários / USERNAME / Biblioteca / Logs / pip: Esse arquivo ou diretório não existe
inexistente
61

pip install --user <package name> (nenhum sudo necessário) funcionou para mim para um problema muito semelhante.

Safwan
fonte
Você deve fornecer pelo menos um requisito para instalar (consulte "pip help install")
Amir
0

informação básica

  • sistema: mac os 18.0.0
  • usuário atual: yutou

a chave

  1. adicione a conta atual ao grupo de roda
sudo dscl . -append /Groups/wheel wheel $(whoami)
  1. modifique o modo de pacote python para 775.
chmod -R 775 ${this_is_your_python_package_path}

a coisa toda

  • quando python3 compilou bem, as informações são exatamente como a pergunta feita.
  • Eu tento usar pip3 install requestse tenho:
File "/usr/local/python3/lib/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: 
'/usr/local/python3/lib/python3.6/site-packages/requests'
  • então eu cd /usr/local/python3/lib/python3.6/site-packages, então, ls -ale tenho:
drwxr-xr-x    6 root   wheel   192B  2 27 18:06 requests/

quando eu vi isso, entendi, makedirs é uma ação de gravação, mas o modo de solicitações drwxrwxr-xexibido apenas o usuário root pode gravar o arquivo de solicitações. Se você adicionar yutou (whoami ) à roda do grupo e modificar o pacote, a roda do grupo pode escrever, então eu posso escrever e o problema foi resolvido.

Como adicionar yutou à roda de grupo? + detectar roda de grupo sudo dscl . -list /groups GroupMembership, você encontrará:

wheel                    root

o grupo roda apenas uma raiz de membro. + adicione yutou ao grupo da roda sudo dscl . -append /Groups/wheel wheel yutou,. + marcar sudo dscl . -list /groups GroupMembership,:

wheel                    root yutou

modificar o modo de pacote python

chmod -R 775 /usr/local/python3/lib/python3.6
kougazhang
fonte
0

Se você alterou sua variável $ PATH, isso também poderia causar o problema. Se você acha que esse pode ser o problema, verifique seu ~ / .bash_profile ou ~ / .bashrc

jeffhale
fonte