bash: mkvirtualenv: comando não encontrado

100

Depois de seguir as instruções na postagem de Doug Hellmanvirtualenvwrapper , eu ainda não consegui iniciar um ambiente de teste.

[mpenning@tsunami ~]$ mkvirtualenv test
-bash: mkvirtualenv: command not found
[mpenning@tsunami ~]$

Deve ser destacado que estou usando WORKON_HOMEque não está no meu $HOME. Tentei procurar /usr/local/bin/virtualenvwrapper.shconforme mostrado nos virtualenvwrapperdocumentos de instalação , mas não existe.

Estou executando o CentOS 6 e o ​​python 2.6.6, se isso for importante.


# File: ~/.bash_profile
# ...

export WORKON_HOME="/opt/virtual_env/"
source "/opt/virtual_env/bin/virtualenvwrapper_bashrc"
Mike Pennington
fonte

Respostas:

107

Solução 1 :

Por algum motivo, virtualenvwrapper.shinstalado em /usr/bin/virtualenvwrapper.sh, em vez de em /usr/local/bin.

O seguinte em meus .bash_profiletrabalhos ...

source "/usr/bin/virtualenvwrapper.sh"
export WORKON_HOME="/opt/virtual_env/"

Minha instalação parece funcionar bem sem fonte virtualenvwrapper_bashrc

Solução 2 :

Como alternativa, conforme mencionado abaixo, você pode aproveitar a chance de que virtualenvwrapper.shjá está em seu shell PATHe apenas emitir umsource `which virtualenvwrapper.sh`

Mike Pennington
fonte
5
Definir WORKON_HOMEcomo "~ / .virtualenvs" ( valor padrão ) permite definir o virtualenvs privado
Pierre de LESPINAY
1
Se você instalar usando o gerenciador de pacotes da sua distribuição, os arquivos estarão em ao /usr/bininvés de /usr/local/bin. Geralmente, você não deve presumir que um ou outro seja encontrado; essa é uma das razões pelas quais temos uma PATHvariável.
tripleee
Essa resposta foi baseada na instalação do virtualenvwrapper com pip, que é o que eu prefiro fazer.
Mike Pennington
Ele precisa ser instalado primeiro,pip install virtualenvwrapper
Eddie
WORKON_HOMEé opcional e não tem nada a ver com a solução.
scones
55

Experimentar:

source `which virtualenvwrapper.sh`

Os crases são substituições de comandos - eles pegam tudo o que o programa imprime e colocam na expressão. Neste caso, "which" verifica o $ PATH para localizar virtualenvwrapper.sh e mostra o caminho para ele. O script é então lido pelo shell via 'fonte'.

Se você quiser que isso aconteça toda vez que reiniciar seu shell, provavelmente é melhor pegar a saída do comando "which" primeiro e, em seguida, colocar a linha "source" em seu shell, algo assim:

echo "source /path/to/virtualenvwrapper.sh" >> ~/.profile

^ Isso pode ser um pouco diferente dependendo do seu shell. Além disso, tome cuidado para não usar um único>, pois isso truncará seu ~ / .profile: -o

Erich
fonte
4
Embora essa possa ser uma dica valiosa para resolver o problema, uma resposta realmente precisa de um pouco mais de detalhes do que isso. Por favor edite a explicar como isso vai resolver o problema. Como alternativa, considere escrever isso como um comentário.
Toby Speight
1
Isso resolveu meu problema. Mas alguém vai explicar por que e como?
h0r53
1
Os crases são substituições de comandos - eles pegam tudo o que o programa imprime e colocam na expressão. Neste caso, "which" verifica o $ PATH para localizar virtualenvwrapper.sh e mostra o caminho para ele. O script é então lido pelo shell via 'fonte'.
Erich
43

Eu tive o mesmo problema no OS X 10.9.1 com o python 2.7.5. Não há problemas com WORKON_HOMEpara mim, mas eu tinha para adicionar manualmente source "/usr/local/bin/virtualenvwrapper.sh"a ~/.bash_profile(ou ~/.bashrcem unix) depois eu corripip install virtualenvwrapper

Nick Benes
fonte
1
Onde você adicionou manualmente a fonte "/usr/local/bin/virtualenvwrapper.sh"?
Gregology
1
@Gregology eu adicionei essa linha ~/.bash_profile. Observe que, ao adicioná-lo pela primeira vez, você terá que recarregar o terminal (que é executado .bash_profile) ou apenas executar o sourcecomando diretamente da linha de comando.
Nick Benes
1
Seria muito útil se você tivesse um título com o nome do arquivo e exibisse todo o conteúdo para que não precisasse receber perguntas sobre "onde você o colocou?"
JGallardo
1
O fato de você usar .bash_profileou .bashrcnão é realmente uma consequência direta da plataforma que está usando, embora uma ou outra possa estar faltando em algumas plataformas. Veja a página de manual do Bash para suas diferenças. Geralmente, você só deve realmente precisar disso no seu .bash_profile, mas algumas distros usam configurações que complicam as coisas.
tripleee
25

Pré-requisitos para executar este comando -

  1. pip (acrônimo recursivo de P ip I nstalls P ackages) é um sistema de gerenciamento de pacotes usado para instalar e gerenciar pacotes de software escritos em Python. Muitos pacotes podem ser encontrados no Python Package Index (PyPI).

    sudo apt-get install python-pip

  2. Instale o ambiente virtual. Usado para criar ambiente virtual, para instalar pacotes e dependências de vários projetos isolados uns dos outros.

    sudo pip install virtualenv

  3. Instalar o wrapper de ambiente virtual Sobre o wrapper de env virtual

    sudo pip install virtualenvwrapper

Depois de instalar os pré - requisitos, você precisa colocar o wrapper do ambiente virtual em ação para criar o ambiente virtual. A seguir estão as etapas -

  1. definir diretório de ambiente virtual na variável de caminho- export WORKON_HOME=(directory you need to save envs)

  2. source /usr/local/bin/virtualenvwrapper.sh -p $WORKON_HOME

Conforme mencionado por @Mike, fonte `which virtualenvwrapper.sh` ou which virtualenvwrapper.shpode ser usado para localizar o arquivo virtualenvwrapper.sh.

É melhor colocar duas linhas acima em ~ / .bashrc para evitar a execução dos comandos acima toda vez que você abrir um novo shell. Isso é tudo que você precisa para criar um ambiente usando mkvirtualenv

Pontos a serem lembrados -

  • No Ubuntu, você pode precisar instalar virtualenv e virtualenvwrapper como root. Simplesmente prefixe o comando acima com sudo.
  • Dependendo do processo usado para instalar o virtualenv, o caminho para o virtualenvwrapper.sh pode variar. Encontre o caminho apropriado executando $ find / usr -name virtualenvwrapper.sh. Ajuste a linha em seu script .bash_profile ou .bashrc de acordo.
Keshav
fonte
1
Adicionando uma nota. No ubuntu 18.04, tive que reiniciar após a instalação e funcionou.
Dan Grahn
@screenmutt Obrigado pela contribuição valiosa. Eu posso ter perdido isso ao usar o ubuntu 16.04. No entanto, gostaria de saber após qual etapa você teve que reiniciar? É depois de instalar pacotes pip ou depois de configurar o "diretório de ambiente virtual"?
Keshav
Após a instalação do invólucro. Funcionou depois disso.
Dan Grahn de
1
@DanGrahn você não precisa reiniciar, apenas precisa executar novamente .bashrc- explicitamente source ~/.bashrcno seu terminal atual ou abrir uma nova janela de terminal
TJ Ellis
9

Use este procedimento para criar um ambiente virtual no Ubuntu

passo 1

Instalar pip

   sudo apt-get install python-pip

passo 2

Instalar virtualenv

   sudo pip install virtualenv

etapa 3

Crie um diretório para armazenar seus virtuaisenvs (eu uso ~ / .virtualenvs)

   mkdir ~/.virtualenvs

ou use este comando para instalar uma versão específica de python em env

virtualenv -p /usr/bin/python3.6 venv

Passo 4

   sudo pip install virtualenvwrapper

passo 5

   sudo nano ~/.bashrc

passo 6

Adicione este código de duas linhas no final do arquivo bashrc

  export WORKON_HOME=~/.virtualenvs
  source /usr/local/bin/virtualenvwrapper.sh

passo 7

Abra um novo terminal (recomendado)

passo 8

Crie um novo virtualenv

  mkvirtualenv myawesomeproject

passo 9

Para carregar ou alternar entre o virtualenvs, use o comando workon:

  workon myawesomeproject

passo 10

Para sair do seu novo virtualenv, use

 deactivate

e certifique-se de usar pip vs pip3

OU siga as etapas abaixo para instalar o ambiente virtual usando python3

Env de instalação

python3 -m venv my-project-env

e ative seu ambiente virtual usando o seguinte comando:

source my-project-env/bin/activate
giveJob
fonte
6

Como acabei de dar uma tragada, tentarei escrever a resposta que desejava há duas horas. Isso é para pessoas que não querem apenas a solução de copiar e colar

Primeiro: Você se pergunta por que copiar e colar caminhos funciona para algumas pessoas enquanto não funciona para outras? ** O principal motivo pelo qual as soluções são diferentes são as diferentes versões do python, 2.x ou 3.x. Na verdade, existem versões distintas do virtualenv e do virtualenvwrapper que funcionam com o python 2 ou 3. Se você estiver no python 2, instale assim:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Se você está planejando usar o python 3, instale as versões relacionadas do python 3

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Você instalou com sucesso os pacotes para sua versão python e está tudo pronto, certo? Bem, experimente. Digite workonem seu terminal. Seu terminal não será capaz de encontrar o comando ( workoné um comando do virtualenvwrapper). Claro que não. Workoné um executável que só estará disponível para você depois de carregar / originar o arquivo virtualenvwrapper.sh. Mas o guia de instalação oficial abordou este, certo? Basta abrir seu .bash_profile e inserir o seguinte, ele diz na documentação:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

Especialmente o comando source /usr/local/bin/virtualenvwrapper.shparece útil, uma vez que o comando parece carregar / originar o arquivo desejado virtualenvwrapper.shque contém todos os comandos com os quais você deseja trabalhar como workone mkvirtualenv. Mas sim, não. Ao seguir o guia de instalação oficial, você é muito provável para receber o erro do post inicial: mkvirtualenv: command not found. Ainda nenhum comando foi encontrado e você ainda está frustrado. Então, qual é o problema aqui? O problema é que o virtualenvwrapper.sh não é onde você está procurando agora. Lembrete curto ... você está procurando aqui:

source /usr/local/bin/virtualenvwrapper.sh

Mas existe uma maneira bastante direta de encontrar o arquivo desejado. Basta digitar

which virtualenvwrapper

para o seu terminal. Isso pesquisará o arquivo em seu PATH , pois é muito provável que ele esteja em alguma pasta incluída no PATH de seu sistema.

Se o seu sistema for muito exótico, o arquivo desejado ficará oculto fora da pasta PATH. Nesse caso, você pode encontrar o caminho para virtalenvwrapper.shcom o comando shellfind / -name virtualenvwrapper.sh

Seu resultado pode ser semelhante a este: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Parabéns. You have found your missing file!. Agora tudo que você precisa fazer é mudar um comando em seu .bash_profile. Apenas mude:

source "/usr/local/bin/virtualenvwrapper.sh"

para:

"/Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh"

Parabéns. O Virtualenvwrapper agora funciona em seu sistema. Mas você pode fazer mais uma coisa para aprimorar sua solução. Se você encontrou o arquivo virtualenvwrapper.shcom o comando which virtualenvwrapper.shsabe que ele está dentro de uma pasta do PATH. Portanto, se você apenas escrever o nome do arquivo, seu sistema de arquivos assumirá que o arquivo está dentro de uma pasta PATH. Assim, você não precisa escrever o caminho completo. Basta digitar:

source "virtualenvwrapper.sh"

É isso aí. Você não está mais frustrado. Você resolveu seu problema. Esperançosamente.

Xen_mar
fonte
Na verdade, acabei de copiar e colar sua solução
johnny 5 de
2

Para instalar com êxito o virtualenvwrapperno Ubuntu 18.04.3, você precisa fazer o seguinte:

  1. Instalar virtualenv

    sudo apt install virtualenv
  2. Instalar virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Adicione o seguinte ao final do .bashrcarquivo

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Execute o .bashrcarquivo

    source ~/.bashrc
  5. Crie o seu virtualenv

    mkvirtualenv your_virtualenv
tsveti_iko
fonte
funciona no Ubuntu 20.04 também. uma pequena correção tho: WORKON_HOME=~/.virtualenvsé o padrão. não há necessidade de definir isso. VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythontambém é o padrão, mas ao usar o python3, isso é útil. também deve-se usar export PATH="$HOME/.local/bin:$PATH"para os caminhos binários do python
scones
1

No Windows 7 e no Git Bash, isso me ajuda:

  1. Crie um arquivo ~ / .bashrc (na pasta pessoal do usuário)
  2. Adicionar linha export WORKON_HOME = $ HOME / .virtualenvs (você deve criar esta pasta se ela não existir)
  3. Adicione a fonte de linha "C: \ Arquivos de programas (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh" (altere o caminho para seu virtualenvwrapper.sh)

Reinicie seu git bash e comandos mkvirtualenv agora funcionará bem.

Eugene Zalivadnyi
fonte
1

Usando Git Bash no Windows 10 e Python36 para Windows, encontrei o virtualenvwrapper.sh em um lugar ligeiramente diferente e executá-lo resolveu o problema

source virtualenvwrapper.sh 
/c/users/[myUserName]/AppData/Local/Programs/Python36/Scripts
menos grebe
fonte
0

Resolvi meu problema no Ubuntu 14.04 OS com python 2.7.6, adicionando duas linhas abaixo em arquivos ~ / .bash_profile (ou ~ / .bashrc em unix).

fonte "/usr/local/bin/virtualenvwrapper.sh"

export WORKON_HOME = "/ opt / virtual_env /"

E então executando essas duas linhas no terminal.

Mants
fonte
0

No Windows 10, para criar o ambiente virtual, substituo " pip mkvirtualenv myproject" por " mkvirtualenv myproject" e isso funciona bem.

Ayoub_DATA
fonte