bash: mkvirtualenv: comando no encontrado

100

Después de seguir las instrucciones de la virtualenvwrapperpublicación de Doug Hellman , todavía no pude iniciar un entorno de prueba.

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

Cabe señalar que estoy usando WORKON_HOMEque no está en mi $HOME. Intenté buscar /usr/local/bin/virtualenvwrapper.shcomo se muestra en los virtualenvwrapperdocumentos de instalación , pero no existe.

Estoy ejecutando CentOS 6 y python 2.6.6, si esto importa.


# File: ~/.bash_profile
# ...

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

Respuestas:

107

Solución 1 :

Por alguna razón, virtualenvwrapper.shinstalado en /usr/bin/virtualenvwrapper.sh, en lugar de debajo /usr/local/bin.

Lo siguiente en mis .bash_profileobras ...

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

Mi instalación parece funcionar bien sin abastecimiento virtualenvwrapper_bashrc

Solución 2 :

Alternativamente, como se menciona a continuación, puede aprovechar la oportunidad que virtualenvwrapper.shya está en su caparazón PATHy simplemente emitir unsource `which virtualenvwrapper.sh`

Mike Pennington
fuente
5
Establecer WORKON_HOMEen "~ / .virtualenvs" ( valor predeterminado ) permite establecer virtualenvs privados
Pierre de LESPINAY
1
Si lo instala utilizando el administrador de paquetes de su distribución, los archivos estarán en /usr/binlugar de /usr/local/bin. Por lo general, no debe asumir que se encuentra uno u otro; esa es una de las razones por las que tenemos una PATHvariable.
tripleee
Esta respuesta se basó en instalar virtualenvwrapper con pip, que es lo que prefiero hacer.
Mike Pennington
Primero debe instalarse,pip install virtualenvwrapper
Eddie
WORKON_HOMEes opcional y no tiene nada que ver con la solución.
bollos
55

Tratar:

source `which virtualenvwrapper.sh`

Las comillas invertidas son sustitución de comandos: toman lo que imprime el programa y lo ponen en la expresión. En este caso, "which" comprueba el $ PATH para encontrar virtualenvwrapper.sh y muestra la ruta hacia él. A continuación, el shell lee el script a través de "fuente".

Si desea que esto suceda cada vez que reinicia su shell, probablemente sea mejor tomar la salida del comando "which" primero, y luego poner la línea "source" en su shell, algo como esto:

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

^ Esto puede diferir ligeramente según su caparazón. Además, tenga cuidado de no usar un solo> ya que esto truncará su ~ / .profile: -o

Erich
fuente
4
Si bien esto puede ser una pista valiosa para resolver el problema, una respuesta realmente necesita un poco más de detalle que esto. Por favor edición para explicar cómo esto va a resolver el problema. Alternativamente, considere escribir esto como un comentario.
Toby Speight
1
Esto resolvió mi problema. Pero, ¿alguien explicará por qué y cómo?
h0r53
1
Las comillas invertidas son sustitución de comandos: toman lo que imprime el programa y lo ponen en la expresión. En este caso, "which" comprueba el $ PATH para encontrar virtualenvwrapper.sh y muestra la ruta hacia él. A continuación, el shell lee el script a través de "fuente".
Erich
43

Tuve el mismo problema en OS X 10.9.1 con python 2.7.5. No había problemas con WORKON_HOMEpara mí, pero yo no tenga que añadir manualmente source "/usr/local/bin/virtualenvwrapper.sh"a ~/.bash_profile(o ~/.bashrcen UNIX) Después de salir corriendopip install virtualenvwrapper

Nick Benes
fuente
1
¿Dónde agregó manualmente la fuente "/usr/local/bin/virtualenvwrapper.sh"?
Gregología
1
@Gregology a la que agregué esa línea ~/.bash_profile. Tenga en cuenta que cuando lo agregue por primera vez, tendrá que volver a cargar el terminal (que se ejecuta .bash_profile) o simplemente ejecutar ese sourcecomando directamente desde la línea de comandos.
Nick Benes
1
Sería muy útil si tuviera un título con el nombre del archivo y mostrara todo el contenido para que no tenga que recibir preguntas de seguimiento sobre "¿dónde lo puso?"
JGallardo
1
Si usa .bash_profileo .bashrcno es realmente una consecuencia directa de la plataforma que está usando, aunque una u otra puede faltar en algunas plataformas. Consulte la página del manual de Bash para conocer sus diferencias. En general, solo debería necesitar esto en su .bash_profile, pero algunas distribuciones usan configuraciones que complican las cosas.
tripleee
25

Requisitos previos para ejecutar este comando:

  1. pip (acrónimo recursivo de P ip I nstalls P ackages) es un sistema de administración de paquetes que se utiliza para instalar y administrar paquetes de software escritos en Python. Se pueden encontrar muchos paquetes en el índice de paquetes de Python (PyPI).

    sudo apt-get install python-pip

  2. Instale el entorno virtual. Se utiliza para crear un entorno virtual, para instalar paquetes y dependencias de múltiples proyectos aislados entre sí.

    sudo pip instalar virtualenv

  3. Instalar contenedor de entorno virtual Acerca del contenedor de entorno virtual

    sudo pip instalar virtualenvwrapper

Después de instalar los requisitos previos , debe poner en acción el contenedor del entorno virtual para crear un entorno virtual. Los siguientes son los pasos:

  1. establecer el directorio de entorno virtual en la variable de ruta export WORKON_HOME=(directory you need to save envs)

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

Como lo menciona @Mike, fuente `which virtualenvwrapper.sh` o which virtualenvwrapper.shpuede usarse para localizar el archivo virtualenvwrapper.sh.

Es mejor poner dos líneas arriba en ~ / .bashrc para evitar ejecutar los comandos anteriores cada vez que abre un nuevo shell. Eso es todo lo que necesita para crear un entorno usando mkvirtualenv

Puntos a tener en cuenta:

  • En Ubuntu, es posible que necesite instalar virtualenv y virtualenvwrapper como root. Simplemente prefija el comando anterior con sudo.
  • Dependiendo del proceso utilizado para instalar virtualenv, la ruta a virtualenvwrapper.sh puede variar. Busque la ruta adecuada ejecutando $ find / usr -name virtualenvwrapper.sh. Ajuste la línea en su script .bash_profile o .bashrc en consecuencia.
Keshav
fuente
1
Añadiendo una nota. En ubuntu 18.04, tuve que reiniciar después de la instalación y luego funcionó.
Dan Grahn
@screenmutt Gracias por sus valiosos aportes. Podría haberlo perdido porque uso ubuntu 16.04. Sin embargo, me gustaría saber después de qué paso tuvo que reiniciar. ¿Es después de instalar paquetes pip o después de configurar un "directorio de entorno virtual"?
Keshav
Después de la instalación del contenedor. Funcionó después de eso.
Dan Grahn
1
@DanGrahn no necesita reiniciar, solo necesita volver a ejecutarlo .bashrc, ya sea explícitamente source ~/.bashrcen su terminal actual o abrir una nueva ventana de terminal
TJ Ellis
10

Utilice este procedimiento para crear env virtual en ubuntu

paso 1

Instalar pip

   sudo apt-get install python-pip

paso 2

Instalar virtualenv

   sudo pip install virtualenv

paso 3

Crea un directorio para almacenar tus virtualenvs (yo uso ~ / .virtualenvs)

   mkdir ~/.virtualenvs

o use este comando para instalar una versión específica de python en env

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

paso 4

   sudo pip install virtualenvwrapper

paso 5

   sudo nano ~/.bashrc

paso 6

Agregue este código de dos líneas al final del archivo bashrc

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

paso 7

Abrir nueva terminal (recomendado)

paso 8

Crea un nuevo virtualenv

  mkvirtualenv myawesomeproject

paso 9

Para cargar o cambiar entre virtualenvs, use el comando workon:

  workon myawesomeproject

paso 10

Para salir de su nuevo virtualenv, use

 deactivate

y asegúrese de usar pip vs pip3

O siga los pasos a continuación para instalar el entorno virtual usando python3

Instalar env

python3 -m venv my-project-env

y active su entorno virtual usando el siguiente comando:

source my-project-env/bin/activate
dar trabajo
fuente
6

Como acabo de pasar por un trago, intentaré escribir la respuesta que hubiera deseado hace dos horas. Esto es para personas que no solo quieren la solución de copiar y pegar

Primero: ¿Te preguntas por qué copiar y pegar rutas funciona para algunas personas mientras que no funciona para otras? ** La razón principal por la que las soluciones difieren son las diferentes versiones de Python, 2.xo 3.x. En realidad, hay versiones distintas de virtualenv y virtualenvwrapper que funcionan con python 2 o 3. Si está en python 2, instale así:

sudo pip install virutalenv
sudo pip install virtualenvwrapper

Si planea usar Python 3, instale las versiones relacionadas de Python 3

sudo pip3 install virtualenv
sudo pip3 install virtualenvwrapper

Ha instalado con éxito los paquetes para su versión de Python y está todo listo, ¿verdad? Bueno, pruébalo. Escribe workonen tu terminal. Su terminal no podrá encontrar el comando ( workones un comando de virtualenvwrapper). Por supuesto que no. Workones un ejecutable que solo estará disponible para usted una vez que cargue / obtenga el archivo virtualenvwrapper.sh. Pero la guía de instalación oficial lo tiene cubierto, ¿verdad? Simplemente abra su .bash_profile e inserte lo siguiente, dice en la documentación:

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

Especialmente el comando source /usr/local/bin/virtualenvwrapper.shparece útil ya que el comando parece cargar / obtener el archivo deseado virtualenvwrapper.shque contiene todos los comandos con los que desea trabajar como workony mkvirtualenv. Pero sí, no. Si se sigue la guía de instalación oficial, es muy probable que reciba el error del mensaje inicial: mkvirtualenv: command not found. Aún no se encuentra ningún comando y todavía está frustrado. Entonces, ¿cuál es el problema aquí? El problema es que virtualenvwrapper.sh no es donde lo está buscando en este momento. Breve recordatorio ... estás mirando aquí:

source /usr/local/bin/virtualenvwrapper.sh

Pero hay una forma bastante sencilla de encontrar el archivo deseado. Sólo tipo

which virtualenvwrapper

a su terminal. Esto buscará el archivo en su RUTA , ya que es muy probable que esté en alguna carpeta que esté incluida en la RUTA de su sistema.

Si su sistema es muy exótico, el archivo deseado se ocultará fuera de una carpeta PATH. En ese caso, puede encontrar la ruta virtalenvwrapper.shcon el comando de shellfind / -name virtualenvwrapper.sh

El resultado puede verse así: /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh Felicitaciones. You have found your missing file!. Ahora todo lo que tienes que hacer es cambiar un comando en tu .bash_profile. Solo cambia:

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

a:

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

Felicidades. Virtualenvwrapper ahora funciona en su sistema. Pero puede hacer una cosa más para mejorar su solución. Si ha encontrado el archivo virtualenvwrapper.shcon el comando which virtualenvwrapper.sh, sabe que está dentro de una carpeta del PATH. Entonces, si solo escribe el nombre del archivo, su sistema de archivos asumirá que el archivo está dentro de una carpeta PATH. Por lo tanto, no tiene que escribir la ruta completa. Sólo tipo:

source "virtualenvwrapper.sh"

Eso es. Ya no estás frustrado. Has resuelto tu problema. Ojalá.

Xen_mar
fuente
De hecho, solo copié y pegué su solución
johnny 5 de
2

Para instalar correctamente virtualenvwrapperen Ubuntu 18.04.3, debe hacer lo siguiente:

  1. Instalar en pc virtualenv

    sudo apt install virtualenv
  2. Instalar en pc virtualenvwrapper

    sudo pip install virtualenv
    sudo pip install virtualenvwrapper
  3. Agregue lo siguiente al final del .bashrcarchivo

    export WORKON_HOME=~/virtualenvs
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    source ~/.local/bin/virtualenvwrapper.sh
  4. Ejecuta el .bashrcarchivo

    source ~/.bashrc
  5. Crea tu virtualenv

    mkvirtualenv your_virtualenv
tsveti_iko
fuente
también funciona en ubuntu 20.04. aunque una pequeña corrección WORKON_HOME=~/.virtualenvses la predeterminada. no es necesario configurar eso. VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythontambién es el predeterminado, pero cuando se usa python3 esto es útil. también se debe usar export PATH="$HOME/.local/bin:$PATH"para las rutas binarias de Python
bollos
1

En Windows 7 y Git Bash esto me ayuda:

  1. Cree un archivo ~ / .bashrc (en la carpeta de inicio de su usuario)
  2. Agregar línea de exportación WORKON_HOME = $ HOME / .virtualenvs (debe crear esta carpeta si no existe)
  3. Agregue la fuente de línea "C: \ Archivos de programa (x86) \ Python36-32 \ Scripts \ virtualenvwrapper.sh" (cambie la ruta de su virtualenvwrapper.sh)

Reinicie su git bash y el comando mkvirtualenv ahora funcionará bien.

Eugene Zalivadnyi
fuente
1

Usando Git Bash en Windows 10 y Python36 para Windows, encontré virtualenvwrapper.sh en un lugar ligeramente diferente y ejecutar esto resolvió el problema

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

Resolví mi problema en el sistema operativo Ubuntu 14.04 con python 2.7.6, agregando a continuación dos líneas en los archivos ~ / .bash_profile (o ~ / .bashrc en unix).

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

exportar WORKON_HOME = "/ opt / virtual_env /"

Y luego ejecutar ambas líneas en la terminal.

Mantas
fuente
0

En Windows 10, para crear el entorno virtual, reemplazo " pip mkvirtualenv myproject" por " mkvirtualenv myproject" y eso funciona bien.

Ayoub_DATA
fuente