¿Por qué pip instaló un paquete en ~/.local/bin?

¿Por qué pip instaló un paquete en ~/.local/bin?

Cuando instalo este programa "Taurus Blazemeter 'bzt'" con pip, termina instalándose en ~/.local/bin la carpeta.

mkdir ~/bzt && cd ~/bzt
sudo apt-get install python default-jre-headless python-tk python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
sudo pip install bzt

¿Alguien sabe ~/.localpara qué sirve esta carpeta y por qué un programa Python como este se instalaría allí?

Respuesta1

La respuesta corta es que ~/.local/bines el valor predeterminado del Directorio de scripts de usuario de Python y que pippuede instalar ejecutables en este directorio si realiza una instalación local de usuario. También puede instalar archivos en otros subdirectorios de ~/.local, que es el valor predeterminado del directorio base de usuarios. Más detalles a continuación.


No estoy seguro de si esta es la primera introducción, pero el ~/.localdirectorio aparece en laespecificación de jerarquía del sistema de archivosdelsistemadsistema init, donde define varios subdirectorios de ~/.local:

~/.local/bin

Ejecutables que aparecerán en la ruta de búsqueda $PATH del usuario. Se recomienda no colocar ejecutables en este directorio que no sean útiles para invocarlos desde un shell; En su lugar, estos deben colocarse en un subdirectorio de ~/.local/lib. Se debe tener cuidado al colocar archivos binarios dependientes de la arquitectura en este lugar, lo que podría resultar problemático si el directorio de inicio se comparte entre varios hosts con diferentes arquitecturas.

~/.local/lib

Datos de proveedores estáticos y privados que son compatibles con todas las arquitecturas.

~/.local/lib/arch-id

Ubicación para colocación de bibliotecas dinámicas públicas. El identificador de arquitectura a utilizar se define en la lista de especificadores de arquitectura multiarca (tuplas).

~/.local/compartir

Recursos compartidos entre varios paquetes, como fuentes o ilustraciones. Por lo general, la ubicación y el formato precisos de los archivos almacenados debajo de este directorio están sujetos a especificaciones que garantizan la interoperabilidad. Si una aplicación encuentra $XDG_DATA_HOME configurado, debe usar el directorio especificado en él en lugar de este directorio.

La adopción del ~/.localdirectorio por parte de Python parece haberse introducido en Python 2.6 y está documentada en PEP (Python Enhancement Proposal) 370:

La especificación incluye las siguientes definiciones para sistemas Unix (incluido Mac OS X).

  • Directorio base de usuarios

    ~/.local

  • Directorio de secuencias de comandos de usuario:

    ~/.local/bin

  • Directorio del sitio del usuario:

    ~/.local/lib/python2.6/site-packages

  • Directorio de datos de usuario:

    ~/.local/lib/python2.6

De esto podemos concluir que Python tiene el concepto del llamado "Directorio de usuarios base" y que su valor predeterminado es ~/.local. El directorio de usuarios base se analiza en laDocumentación de Python para el sitemódulo.. En particular, proporciona métodos para determinar los valores de su Directorio base de usuarios y Directorio de sitios de usuarios, los indicadores --user-basey --user-siteopciones. Podrías usarlos así:

user@host:~$ python -m site --user-base

/home/user/.local

user@host:~$ python -m site --user-site

/home/user/.local/lib/python2.7/site-packages

Hay varias preguntas publicadas en los sitios de StackExchange relacionadas con el ~/.localdirectorio que utilicé como referencia:

información relacionada