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
python
installation
packages
virtualenv
pip
Luke Sapan
fonte
fonte
easy_install
?which easy_install
para ver se está usando seu virtualenv ou o sistema.which pip
produz? E você vê porpip
dentromyenv.env/bin/
?Respostas:
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.)
deactivate
seu v-env. Após a correção, é necessário reiniciar o v-env, assim comodeactivate
agora. 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.
fonte
grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @
. fonteEu 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 ...
fonte
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.
fonte
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
para criar o env.
fonte
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/' *
fonte
No meu caso, eu defini dois aliases (para superar outro problema na versão python padrão):
E isso estava causando os mesmos sintomas:
A remoção dos aliases resolveu o problema (antes ou depois da criação do virtualenv)
fonte
A chamada
sudo pip
chamará o pip global e não o pip no seu virtualenv. Ative / Trabalhe no seu ambiente e depois chamepip
, nãosudo pip
, isso pode resolver o seu problema, como aconteceu com o meu.fonte