GNU/Linux >> Tutoriales Linux >  >> Linux

Virtualenv usa python incorrecto, aunque es el primero en $PATH

Mi problema fue que recientemente me mudé mi proyecto con virtualenv a otra ubicación, debido a este activate script tenía mal VIRTUAL_ENV camino.

$ cat path_to_your_env/bin/activate

... # some declarations

VIRTUAL_ENV="/path_to_your_env/bin/python"  # <-- THIS LINE
export VIRTUAL_ENV

... # some declarations

Para arreglar esto, simplemente actualice VIRTUAL_ENV en activate guión.

También es posible que necesite arreglar la primera línea de su bin/pip para vincular a la ruta real de python.


Si no obtiene el programa que which dice que debe obtener, debe mirar más arriba en la cadena que el ejecutor de la plataforma. Los shells suelen tener una forma de alias de los comandos y en la mayoría de los shells de Unixy solo puede ingresar alias para ver qué comandos se han reasignado. Entonces solo es cuestión de ir a los archivos de configuración de su shell y eliminar el alias.

A veces, las personas se alias python para tratar de resolver qué python deberían usar. Pero por lo general hay otras maneras mejores. En mi máquina Linux, por ejemplo, python3 está en la ruta pero es un enlace simbólico al python real que estoy usando.

[email protected] ~ $ which python3
/usr/bin/python3
[email protected] ~ $ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Feb 17  2016 /usr/bin/python3 -> python3.4
[email protected] ~ $ 

Esto es bueno porque los programas que no son de shell que ejecutan python obtienen el mismo que yo y los entornos virtuales funcionan de forma natural.


Como sugirió tdelaney en los comentarios, ejecuté alias y descubrí que anteriormente había creado un alias python a /usr/bin/python3.5 en mi .bashrc .

Eliminé ese alias de mi .bashrc , ejecutó unalias python y source ~/.bashrc y el problema fue resuelto.


En Cygwin, todavía tengo un problema incluso después de crear un enlace simbólico al punto /usr/bin/python a F:\Python27\python.exe . Aquí, después de source env/Scripts/activate , which python sigue siendo /usr/bin/python .

Después de mucho tiempo, encontré una solución. En lugar de usar virtualenv env , tienes que usar virtualenv -p F:\Python27\python.exe env aunque haya creado un enlace simbólico.


Linux
  1. ¿Por qué no se puede encontrar Read /run/user/1000/gvfs aunque se esté ejecutando como raíz?

  2. ¿No queda espacio en el dispositivo aunque lo haya?

  3. preguntas de virtualenv de python

  4. Linux, ¿por qué no puedo escribir aunque tengo permisos de grupo?

  5. Gradle encuentra JAVA_HOME incorrecto a pesar de que está configurado correctamente

Declaración de Python if..else

¿Borrar hasta el final de la línea utiliza el color de fondo incorrecto en Tmux?

git gc:no queda espacio en el dispositivo, aunque hay 3 GB disponibles y tmp_pack solo 16 MB

Nginx todavía intenta abrir el archivo de registro de errores predeterminado aunque configuré el archivo de configuración de nginx mientras recargaba

El ejecutable de Linux falla con Archivo no encontrado a pesar de que el archivo está allí y en PATH

`Permiso denegado` para CD en un directorio a pesar de que los permisos son correctos