PIP não instalando no diretório virtualenv


10

Estou tentando instalar o django em um virtualenv que já existe.

Seguindo as instruções listadas no site de instalação do pip aqui , executei o seguinte no SSH.

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

No entanto, na parte inferior da instalação, estou vendo o seguinte:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

Parece que está tentando instalá-lo no diretório global. Eu não tenho privilégios de sudo. Estou fazendo algo errado aqui?

Atualização: $ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games


Funciona corretamente para outros pacotes? Você tem o mesmo problema se usar easy_install?
Larsks

Mesmo problema com outros pacotes. E eu acredito que o easy_install requer sudo e seria instalado no diretório global.
26413 Luke Sapan

Não, a configuração de um virtualenv facilita a instalação e o pip. Você pode digitar which easy_installpara ver se está usando seu virtualenv ou o sistema.
Larsks

Na verdade, você tem certeza de que está executando o pip de dentro do virtualenv? O que which pipproduz? E você vê por pipdentro myenv.env/bin/?
Larsks

Eu vejo pip dentro de myenv.env / bin /. Eu apenas tentei "ativar" meu ambiente novamente, e apesar de estar nesse modo ", qual pip" e "qual easy_install" retornam "usr / local / bin / pip" e "usr / bin / easy_install", respectivamente.
26513 Luke Sapan

Respostas:


6

Desculpe por um ano de resposta tardia! Eu tive o mesmo problema e o corrigi. Não sei se você alterou o nome de um diretório após criar o ambiente virtual. Se sim, então aqui está o que eu fiz.

1.) deactivateseu v-env. Após a correção, é necessário reiniciar o v-env, assim como deactivateagora. direita?

2.) Agora, desde que criamos o v-env em um caminho diferente, precisamos alterar as variáveis ​​do caminho estático nesses arquivos.

Para que o pip funcione, você não precisa fazer isso, mas eu ainda faço. bin/activate, bin/activate.csh, bin/activate.fish

bin/pip, bin/pip2, bin/pip2.7

bin/easy_install, bin/easy_install2.7

3.) Para que o pip funcione, você deve corrigir o interpretador python no arquivo pip, que também possui um local estático de intérprete definido por virtualenv no processo de criação.

4.) Para que o easy_install funcione? Você adivinhou, conserte a localização do intérprete.

Espero que isso tenha ajudado qualquer pessoa que esteja lendo isso no futuro. Desculpe OP, por estar atrasado.


Sim, foi exatamente isso. No meu caso, fui capaz de recriar o virtualenv do zero e isso foi resolvido.
Luke Sapan

Fico feliz em ajudar
Crispy

Estou tão feliz por finalmente encontrar uma resposta. Para mim, o uso do sed na pasta venv facilitou muito o trabalho. Algo como grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @. fonte
Keith

Você diz: "Para que o pip funcione, você deve corrigir o interpretador python no arquivo pip", onde e como isso é feito?
Dave

3

Eu tenho esse mesmo problema.

Excluí o ambiente virtual e criei um novo, que resolveu o problema.

Provavelmente não é a resposta que você estava esperando, mas já que é a única ...


1

Bem, sem privilégios administrativos, você é muito limitado no que é capaz de fazer. Se você não tem permissão para se elevar ou pedir privilégios, a melhor maneira que encontrei seria criar outro ambiente, criar um arquivo requirements.txt, baixar todos os pacotes necessários para sua máquina (django) que também deve estar localizado no seu arquivo de requisitos e deve funcionar.


0

Teve o mesmo problema. No meu caso, o motivo foi que o ambiente virtual criado era para python2.7 (o padrão), mas eu estava usando o pip3 para instalar um pacote. O pip3 não estava presente no meu virtualenv, por isso assumiu o padrão global. Para mim, a correção foi usar

virtualenv flask --python=python3

para criar o env.


0

Eu encontrei o mesmo problema causado pela renomeação do usuário. A resposta de Crispy está totalmente certa. E minha solução pode ser mais conveniente.

setps:
1. Digite o caminho da lixeira do seu ambiente virtual, como cd ~/virenv_dir/bin
2. Renomeie todos os arquivos nesse diretório usando o comando sed.sed -i 's/old_name/new_name/' *


0

No meu caso, eu defini dois aliases (para superar outro problema na versão python padrão):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

E isso estava causando os mesmos sintomas:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

A remoção dos aliases resolveu o problema (antes ou depois da criação do virtualenv)


0

A chamada sudo pipchamará o pip global e não o pip no seu virtualenv. Ative / Trabalhe no seu ambiente e depois chame pip, não sudo pip, isso pode resolver o seu problema, como aconteceu com o meu.

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.