Ubuntu no puede encontrar un archivo ejecutable en ~ / .local / bin

12
after installation with

pip3 install --user steem-piston
you will get a new executable piston installed in ~/.local/bin

Instalé la herramienta usando pip install, pero no puedo encontrar el archivo ejecutable.

No estoy seguro de entender qué es este directorio: ~ / .local / bin.

¿Es solo root / local / bin?

TabulaSmaragdina
fuente

Respuestas:

11

~/es una abreviatura de shell para su carpeta de inicio, generalmente /home/USERNAME/, donde USERNAMEestá el nombre de su usuario. Es lo mismo que$HOME

~/.local/bines una subcarpeta nombrada binen la subcarpeta nombrada .localen su carpeta de inicio.

Puedes usar

~/.local/bin/pip3

para llamar a tu nuevo pip3ejecutable. Puede ser más fácil agregar ~/.local/bina la $PATHvariable de entorno, vea ¿Cómo agregar un directorio a mi ruta? así que no necesitas escribir ~/.local/bin/todo el tiempo.

Asegúrese de agregarlo antes del valor anterior de $PATH, como

PATH="$HOME/.local/bin/:$PATH"
Florian Diesch
fuente
Gracias por tu publicación. Desafortunadamente, no puedo ver la subcarpeta en la carpeta de inicio (¿es un archivo oculto?). Y cuando escribo ese comando en la terminal obtengo: bash: /home/myname/.local/bin/pip3: No existe tal archivo o directorio
TabulaSmaragdina
Sí, si el nombre de un archivo o carpeta comienza con un punto, está oculto de forma predeterminada. También puede usar ls -apara lsmostrar archivos y carpetas ocultos.
Florian Diesch
@TabulaSmaragdina Es extraño que no se encuentre el archivo. Intenta correr ls -a ~/.local/bin. Si el resultado es largo, edítelo en su pregunta.
wjandrea
1
No quiere decir ~/.local/bin/piston?
terdon
Nota: ~/.local/bin/ya está en $ PATH en Ubuntu moderno.
Aaron Franke el
7

~/.local/binse ha agregado a la RUTA en Ubuntu 16.10 y se agregó a 16.04. Ver https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562

Si está ejecutando Ubuntu> = 16.04 con todas las actualizaciones, ya debería estar bien. Si no, puede agregarlo manualmente:

Para un solo usuario, edite el archivo ~/.profiley agregue al final:

PATH="$HOME/.local/bin:$PATH"

Si desea que cualquier usuario recién creado tenga esto, puede agregar esta misma línea al final de /etc/skel/.profile

Mossroy
fuente
0

Estaba haciendo esto hoy, parece que la documentación clara es escasa para las personas que desean mantener un cierto control sobre lo que está instalado y dónde.

Suponiendo que ha ejecutado pip3 install lo que sea, el valor predeterminado es poner cosas en ~ / .local, como ya sabe. Es habitual en Unix dividir los tipos de archivo, poner los "ejecutables" en ~ / .local / bin.

En una terminal, escriba esto para ver su ruta ahora:

$ echo $PATH

Comprueba que tienes las cosas de Python instaladas en ~ / .local

$ ls -la ~/.local/bin

Eso confirma que los archivos ejecutables están allí, o lo hacen por mí. Si esos permisos de archivo muestran "x", son ejecutables.

Ahora, agregue ese directorio a la ruta dentro de la terminal

$ export PATH=~/.local/bin:$PATH

Verifique su camino nuevamente para ver el cambio. Recuerde que es una configuración temporal solo para esa sesión de terminal. No se aplica a otros terminales al mismo tiempo o en el futuro. Es un buen lugar para probar cosas.

Después de eso, cada programa ejecutable dentro de ~ / .local / bin debería ejecutarse si escribe su nombre en la línea de comando. No es necesario ejecutar "~ / .local / bin / jupyter", por ejemplo. Solo escribe "jupyter". No necesita el "./" que ve a veces, es cuando inicia un programa desde el directorio de trabajo que no está en la ruta.

Si luego decide que desea hacer que sea permanente, de modo que ~ / .local / bin esté siempre en su RUTA, puede hacerlo editando algunos archivos de configuración del entorno. Dependiendo de su configuración, por ejemplo, en el archivo de mi carpeta de inicio ".bashrc", la última línea es "export PATH = $ PATH: $ HOME / bin". Entonces podría poner $ HOME / local / bin al frente de eso. Tenga en cuenta que escribí $ HOME, no "~" allí. Luego, cada vez que uso un shell BASH, PATH se arreglará. Si puede usar otros shells, creo que lo correcto es editar el ~ / .profile en su lugar. Creo que todos los shells en Ubuntu obtendrán ese archivo.

En mi caso, instalé varios programas con pip3, como jupyter. Una forma de asegurarse de dónde se instaló es ejecutar

$ pip3 list

muestra todos los paquetes disponibles, no solo los instalados por pip3.

$ pip3 show jupyter

En mi caso, por ejemplo:

---
Metadata-Version: 2.0
Name: jupyter
Version: 1.0.0
Summary: Jupyter metapackage. Install all the Jupyter components in one go.
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: jupyter@googlegroups.org
Installer: pip
License: BSD
Location: /home/pauljohn/.local/lib/python3.5/site-packages
Requires: nbconvert, ipykernel, ipywidgets, notebook, jupyter-console, qtconsole
Classifiers:
  Intended Audience :: Developers
  Intended Audience :: System Administrators
  Intended Audience :: Science/Research
  License :: OSI Approved :: BSD License
  Programming Language :: Python
  Programming Language :: Python :: 2
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4

No quiero que esto suene como una llama, pero puede parecer un ataque. Te advierto que no sigas ansiosamente los consejos que algunas personas aquí ofrecerán para ejecutar "sudo pip3 xxx". En general, preferiría ejecutar instalaciones raíz solo con paquetes Debian, no con pip3. Si corre sin el sudo, está limitando el peligro a la cuenta de usuario. Si hace tonterías mientras ejecuta un script como root, puede dispersar archivos por todo su disco duro y arrepentirse. Especialmente si otras personas inician sesión y usan esa computadora, evite hacer algo como root a menos que tenga confianza.

También vale la pena señalar, que pip3 se instala por defecto en ~ / .local, pero eso no es necesario. Lea "man pip3", busque "-t" (--target). Puede especificar el directorio de instalación. Creo que es bueno porque puede limitar cualquier daño a otro directorio y eliminarlo cuando lo desee. ~ / .local podría tener otras cosas valiosas instaladas por otros programas y preferiría no borrarlas. Pienso en ~ / .local como un lugar más para la configuración que para los programas de todos modos.

pauljohn32
fuente