Tengo un proyecto de Python que utiliza un entorno virtual. En mi carpeta de proyecto, hay un bin/
carpeta que contiene todos los archivos ejecutables que necesita el proyecto. El uso de estos, usted ejecute source bin/activate
a insertar la ruta de acceso a ese bin/
directorio a su PATH
variable.
Ahora, la mayoría de las veces esto funciona como se esperaba. Puedo ejecutar el comando source y cuando ejecuto which python
, muestra de la que me gustaría esperar desde el entorno virtual. A veces, sin embargo, no lista que uno. Enumera una diferente en mi PATH
. He aquí un ejemplo de lo que quiero ver:
Podemos ver que estamos en el directorio del proyecto:
$ pwd
/Users/dalemy/Projects/my_project
También podemos ver que el python
y python3
binarios (en realidad enlaces simbólicos) son en la bin/
directorio de:
$ ls -al /Users/dalemy/Projects/my_project/bin/python*
lrwxr-xr-x 1 dalemy staff 7 10 Feb 15:16 /Users/dalemy/Projects/my_project/bin/python -> python3
lrwxr-xr-x 1 dalemy staff 44 10 Feb 15:16 /Users/dalemy/Projects/my_project/bin/python3 -> /usr/local/Cellar/python/3.7.2_1/bin/python3
Aquí podemos ver que esta es la primera entrada en la PATH
variable:
$ echo $PATH
/Users/dalemy/Projects/my_project/bin:/Users/dalemy/.poetry/bin:/usr/local/opt/python3/bin:/usr/local/opt/ruby/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/MacGPG2/bin:/opt/X11/bin:/Users/dalemy/Config/scripts:/Users/dalemy/.poetry/bin:/Users/dalemy/.local/bin
Pero cuando nos preguntamos acerca de donde Python se encuentra, no la encuentra:
$ which python
/usr/local/bin/python
$ which python3
/usr/local/opt/python3/bin/python3
Ejecución type -a
muestra la misma cosa:
$ type -a python
python is /usr/local/bin/python
python is /usr/bin/python
python is /usr/local/bin/python
python is /usr/bin/python
No tengo idea de por qué está sucediendo esto. El bin/activate
comando se ejecuta hash -r
y he ejecutarlo manualmente para asegurarse de que es quitar todo lo almacenado en caché. Si puedo eliminar cada una de las entradas en mi PATH
a excepción de la primera, acabo de conseguir que no se puede encontrar.
Una vez que se comienza a hacer esto, la única solución que he encontrado es para quitar el entorno virtual completamente y volver a crearla.
¿Qué podría estar pasando mal aquí?