0 votos

¿Por qué no se encuentra un binario en mi RUTA?

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í?

1voto

La única forma que encontré para reproducir lo que está viendo es si el enlace simbólico apunta a un archivo que no existe. Así que es mejor usar ls -l para verificar que todos los destinos de enlaces simbólicos existen realmente, y corregir los enlaces si es necesario.

En términos más generales: a menos que realmente necesite una versión específica de python3, podría ser mejor simplemente ejecutar

 cd /Users/dalemy/Projects/my_project/bin
ln -s /usr/local/bin/python3 python3
 

o simplemente confiar en PATH .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by: