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.