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.


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.


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


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.


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

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.