Forma recomendada de instalar paquetes de Python en Arch

37

¿Cuál es la forma recomendada de instalar paquetes python en Arch? ¿Buscarlos en el AUR e instalarlos desde allí (o crear un PKGBUILDarchivo para hacer un paquete usted mismo) o usar pip?

Comencé instalando cosas de pacman y AUR y no sé si sería aconsejable mezclarlo con los pippaquetes.

Nils Werner
fuente

Respuestas:

34

Si no necesita los paquetes de Python para todos los usuarios, puede instalarlos en su hogar de esta manera:

pip install --user packagename

La instalación en su hogar no entrará en conflicto con el administrador de paquetes.

Por defecto pip install --userse instalará en su directorio "sitio de usuario". Por lo general, es decir algo como: /home/lesmana/.local/lib/python3.6/site-packages.

El siguiente comando imprimirá, entre otros, la ubicación de su "sitio de usuario":

python -m site

Para personalizar la ubicación de instalación:

PYTHONUSERBASE=$HOME/some/dir pip install --user packagename

esto instalará todo debajo $HOME/some/dir

correr:

PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname

Consulte el manual de pip para obtener más información.


Si desea el paquete de Python para todos los usuarios, entonces el mejor lugar para instalarlo es /opt. por ejemplo así:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(tenga en cuenta lo que falta --user)

y correr, como arriba:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

Explicación de antecedentes: las /optdistribuciones gnu / linux lo reconocen comúnmente como el directorio donde el usuario local o el administrador del sistema pueden instalar sus propias cosas. en otras palabras: el administrador de paquetes de distribuciones generalmente no se toca /opt. esto está más o menos estandarizado en el Estándar de jerarquía del sistema de archivos

Para comodidad de los usuarios, aún querrá escribir un script de envoltura y colocarlo en /bino /usr/bin. Esto todavía conlleva el riesgo de colisionar con el administrador de paquetes de distribución, pero al menos es solo un archivo de script de contenedor. Entonces, el daño que podría hacerse es mínimo. Puede nombrar el script de envoltura de forma similar local-fooo custom-foopara minimizar aún más el riesgo de colisión con el administrador de paquetes de distribución.

Alternativamente, puede modificar PATHpara incluir /opt/biny colocar su script de contenedor allí. Pero esto nuevamente requiere que modifique un (o algunos) archivos del sistema donde PATHestá definido, lo que nuevamente puede ser sobrescrito por el administrador del paquete de distribución.

En resumen: si desea instalar para todos los usuarios, hágalo /opt. Donde coloque el script de envoltura para mayor comodidad es una decisión de juicio.

Más información sobre el /optestándar de jerarquía del sistema de archivos:

lesmana
fuente
En mi humilde opinión, esto, junto con un puntero para configurar virtualenvs, debería ser la respuesta aceptada.
ttsiodras
1
Ugh Más nuevo pythony deseo haberlo sabido antes sudiode hacer cosas. Gracias por esto.
Hendy
¿Qué sucede si necesita los paquetes de Python para todos los usuarios?
Mehrdad
@Mehrdad respuesta actualizada
lesmana
@lesmana: ¡Gracias! ¿Pero estás seguro de que esa es la forma recomendada de hacerlo? Esta es la primera vez que escucho que alguien sugiere usar / optar por Python ...
Mehrdad
9

Por lo general, en una distribución, se recomienda que use el administrador de paquetes de la distribución. Por supuesto, puede instalar cosas usando pip (o, en el mundo perl, cpan), o compilar e instalar cosas usted mismo. Sin embargo, cuando hace esto, el administrador de paquetes de la distribución no los conoce y no puede administrar dependencias o actualizaciones para ellos.

Usar pip es prácticamente equivalente a compilar e instalar su propio paquete. Hágalo si lo necesita, pero prefiera el administrador de paquetes de la distribución.

Falcon Momot
fuente
2
Debe evitar absolutamente el uso pip(al menos globalmente a través de sudoo como root): acabo de recibir algunos site-package/...errores que ya existen cuando pacmantraté de instalar algunas dependencias
Tobias Kienzler
Acabo de recibir esos errores también. Había actualizado todos los paquetes pip3 y luego pacman se negó a actualizar el sistema debido a conflictos. Tuve que desinstalar ese paquete a través de pip3 y pacman, luego hacer la actualización del sistema y finalmente instalar el paquete nuevamente (usando pacman, por supuesto).
Al.G.
8

El camino correcto para ArchLinux

¡La forma correcta de instalar paquetes PYTHON en ArchLinux es usando PACMAN! Para instalar paquetes en Python3 tienes que usar

sudo pacman -S python-'package'

Si desea instalar paquetes desde Python2, debe usar

sudo pacman -S python2-'package'

La mayoría de los paquetes de Python están en los repositorios de ArchLinux y los paquetes que no están en AUR (Repositorios de usuarios de ArchLinux): para estos paquetes, debe descargar el archivo PKGBUILD y compilarlo. Después de eso, debe usar PACMAN para finalizar la instalación

makepkg -s
sudo pacman -U 'compiled-package'

La segunda forma correcta para ArchLinux

Cuando el paquete no está en el AUR o el PKGBUILD no funciona, puede usar PIP para instalarlo en Python3

sudo pip install 'python-package'

o Python2

sudo pip2 install 'python-package'

Podrías dar una oportunidad virtualenvo inclusoconda

En Arch también puede usar entornos virtuales. Esto puede aportar portabilidad a su código y también mantener paquetes antiguos. Instalarlo con

sudo pacman -S python-virtualenv

y prueba esto

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

Cuando cree este entorno yourenv, configurará pippara instalar paquetes solo en este entorno, no en todo el sistema.

Estos otros enlaces pueden ser útiles si desea obtener más información sobre la administración de paquetes en Linux con condao virtualenv:

Instalación de paquetes de Python desde un cuaderno Jupyter

Code Python en ArchLinux

Si sigue estas reglas, su ArchLinux no se romperá y no tendrá problemas de dependencia entre PACMAN y PIP.

Espero que sea útil!

Emanuel Fontelles
fuente
1

Además de las otras respuestas aquí, consulte el python-virtualenvpaquete. Puede ser muy útil si está desarrollando varios proyectos con diferentes dependencias con números de versión que no coinciden.

https://wiki.archlinux.org/index.php/Python_VirtualEnv

También tenga en cuenta que hay dos variantes de pip y virtualenv. Uno para Python 2 y otro para Python 3. Si la instalación falla con un error de sintaxis, es posible que esté intentando con la versión incorrecta.

bobbaluba
fuente