Saltar al contenido

Forma recomendada de instalar paquetes de Python en Arch

Luego de tanto luchar ya dimos con la solución de esta traba que ciertos los usuarios de nuestro espacio han tenido. Si quieres aportar algún detalle no dejes de aportar tu información.

Solución:

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 --user se instalará en el directorio de su “sitio de usuario”. Por lo general, es 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 la instalación:

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

esto instalará todo bajo $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

(nota lo que falta --user)

y para ejecutar, como arriba:

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

Explicación de antecedentes: /opt es comúnmente reconocido por las distribuciones gnu / linux como el directorio donde el usuario local o administrador del sistema puede instalar sus propias cosas. en otras palabras: el administrador de paquetes de distribuciones no suele tocar /opt. esto está más o menos estandarizado en el Estándar de jerarquía del sistema de archivos

Para mayor comodidad de los usuarios, aún querrá escribir un script de envoltura y colocarlo en /bin o /usr/bin. Esto aún conlleva el riesgo de colisionar con el administrador de paquetes de distribución, pero al menos es solo un archivo de script contenedor. Por tanto, el daño que se puede hacer es mínimo. Puede nombrar la secuencia de comandos de envoltura algo como local-foo o custom-foo para minimizar aún más el riesgo de colisión con el administrador de paquetes de distribución.

Alternativamente, puede modificar PATH para incluir /opt/bin y coloque su script de envoltura allí. Pero esto nuevamente requiere que modifique uno (o algunos) archivos del sistema donde PATH se define que nuevamente puede ser sobrescrito por el administrador de paquetes de distribución.

En resumen: si desea instalar para todos los usuarios, hágalo en /opt. El lugar donde coloque el guión de envoltura para mayor comodidad es una llamada de juicio.

Más información sobre /opt y estándar de jerarquía del sistema de archivos:

  • ¿Cuál es la diferencia entre / opt y / usr / local?
  • http://www.pathname.com/fhs/2.2/fhs-3.12.html

La forma correcta de 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 de Python2, debe usar

sudo pacman -S python2-'package'

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

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

La segunda forma correcta de 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'

TENGA EN CUENTA: cuando estás usando pip la misma carpeta de instalación se comparte con pacman y la mayoría de las veces, especialmente cuando está actualizando todos los paquetes del sistema (sudo pacman -Suy), generará un error de conflicto. Siempre debe preferir la primera opción anterior. Para resolver problemas de conflicto, simplemente desinstale pip empaquetar e instalar el paquete equivalente en pacman (pip uninstall 'python-package').

Podrías dar una oportunidad a virtualenv o incluso conda

Si está planeando desarrollar alguna aplicación de Python o un paquete de Python, su mejor opción es usar entornos virtuales.

Para aplicaciones de empaquetado de Python, debe probar poetry es la mejor opción actual para administrar la aplicación de principio a fin. Es una opción mucho mejor que requirements.txt + setup.py.

Otra opción más sencilla es utilizar python-virtualenv. 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 creas este ambiente yourenv, lo configuraras pip para instalar paquetes solo en este entorno, no a 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 conda o virtualenv:

Instalación de paquetes de Python desde un cuaderno de Jupyter

Código 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!

Normalmente, en una distribución, se recomienda que utilice el administrador de paquetes de la distribución. Por supuesto, puede instalar cosas usando pip (o, en el mundo de perl, cpan), o compilar e instalar las cosas usted mismo. Sin embargo, cuando haces esto, el administrador de paquetes de la distribución no los conoce y no puede administrar las 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.

Calificaciones y comentarios

Nos encantaría que puedieras dar difusión a esta crónica si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *