reconoce programa por pip3 lotes interno externo ejecutable como comando archivo python macos pip macports

programa - powershell no reconoce python



pip instala paquetes con éxito, pero los ejecutables no se encuentran desde la línea de comandos (6)

Estoy trabajando en mac OS X Yosemite, versión 10.10.3.

Instalé python2.7 y pip usando macport como lo hice en http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/

Puedo instalar paquetes con éxito e importarlos dentro de mi entorno python y scripts python. Sin embargo, no se encuentra ningún ejecutable asociado con un paquete que se pueda llamar desde la línea de comandos en el terminal.

¿Alguien sabe qué podría estar mal? (Más detalles a continuación)

Por ejemplo, mientras instala un paquete llamado "rosdep" como se indica en http://wiki.ros.org/jade/Installation/Source

Puedo ejecutar: sudo pip install -U rosdep que se instala sin errores y los archivos correspondientes se encuentran en /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

Sin embargo, si intento ejecutar: sudo rosdep init , sudo rosdep init un error: "sudo: rosdep: command not found"

Este no es un error específico del paquete. Obtengo esto para cualquier paquete instalado usando pip en mi computadora. Incluso intenté agregar

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages

a mi $PATH . Pero los ejecutables no se encuentran en la línea de comando, a pesar de que los paquetes funcionan perfectamente desde Python.


Además de agregar el directorio bin de python a la variable $PATH , también tuve que cambiar el propietario de ese directorio para que funcione. No tengo idea de por qué ya no era el dueño.

chown -R ~/Library/Python/


En Windows, debe agregar la ruta %USERPROFILE%/AppData/Roaming/Python/Scripts a su ruta.


En macOS con la instalación de Python predeterminada, debe agregar /Users/<you>/Library/Python/2.7/bin/ a su $ PATH.

Agregue esto a su .bash_profile:

export PATH="/Users/<you>/Library/Python/2.7/bin:$PATH"

Ahí es donde pip instala los ejecutables.

Consejo: Para la versión de Python no predeterminada, which python buscará la ubicación de su instalación de Python y reemplazará esa parte en la ruta anterior. (Gracias por la pista Sanket_Diwale)


Me topé con esta pregunta porque creé, construí y publiqué con éxito un paquete PyPI, pero no pude ejecutarlo después de la instalación. La variable $PATH se configuró correctamente.

En mi caso, el problema era que no había establecido el punto de entry_point en el archivo setup.py :

entry_points = {''console_scripts'': [''YOUR_CONSOLE_COMMAND=MODULE_NAME.FILE_NAME:FUNCTION_NAME''],},


Si está instalando usando --user (p pip3.6 install --user tmuxp Ej., pip3.6 install --user tmuxp ), es posible obtener el directorio de instalación de usuario específico de la plataforma de Python usando el módulo del site . Por ejemplo, en macOS:

$ python2.7 -m site --user-base /Users/alexp/Library/Python/2.7

Al agregar /bin a esto, ahora tenemos la ruta donde se instalarán los ejecutables del paquete. Podemos llenar dinámicamente la RUTA en el archivo rc de su shell en función de la salida; Estoy usando bash, pero con suerte, esto es portátil:

# Add Python bin directories to path python3.6 -m site &> /dev/null && PATH="$PATH:`python3.6 -m site --user-base`/bin" python2.7 -m site &> /dev/null && PATH="$PATH:`python2.7 -m site --user-base`/bin"

Utilizo las versiones precisas de Python para reducir la posibilidad de que los ejecutables simplemente "desaparezcan" cuando Python actualiza una versión menor, por ejemplo, de 3.5 a 3.6. Desaparecerán porque, como se puede ver arriba, la ruta de instalación del usuario puede incluir la versión de Python. Entonces, si bien python3 podría apuntar a 3.5 o 3.6, python3.6 siempre apuntará a 3.6. Esto debe tenerse en cuenta al instalar más paquetes, por ejemplo, use pip3.6 sobre pip3 .

Si no le importa la idea de que los paquetes desaparezcan, puede usar python2 y python3 en python3 lugar:

# Add Python bin directories to path # Note: When Python is upgraded, packages may need to be re-installed # or Python versions managed. python3 -m site &> /dev/null && PATH="$PATH:`python3 -m site --user-base`/bin" python2 -m site &> /dev/null && PATH="$PATH:`python2 -m site --user-base`/bin"


revisa tu $ PATH

tox tiene un modo de línea de comando:

audrey:tests jluc$ pip list | grep tox tox (2.3.1)

¿Dónde está?

audrey:tests jluc$ which tox /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/tox

y que hay en mi $ PATH?

audrey:tests jluc$ echo $PATH /opt/chefdk/bin:/opt/chefdk/embedded/bin:/opt/local/bin:..../opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin...

Observe el /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin ? Eso es lo que permite encontrar mis cosas instaladas en pip

Ahora, para ver de dónde provienen las cosas de Python, intente hacer esto (sustituya rosdep por tox ).

$python >>> import tox >>> tox.__file__

que imprime:

''/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/tox/__init__.pyc''

Ahora, cd al directorio justo encima de lib en lo anterior. ¿Ves un directorio bin ? ¿Ves a rosdep en ese contenedor? Si es así, intente agregar el bin a su $ PATH.

audrey:2.7 jluc$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7 audrey:2.7 jluc$ ls -1

salida:

Headers Python Resources bin include lib man share