¿Cuál es la mejor manera de instalar paquetes de Python?

41

¿Cuál es la mejor manera de instalar paquetes de Python en Ubuntu 11? Soy un converso reciente a Ubuntu y quiero aprender las mejores prácticas.

Por contexto, estoy buscando instalar el paquete tweeststream, pero no lo vi en mi administrador de paquetes Synaptic. Además, soy muy nuevo en programación, pero generalmente puedo seguir junto con ejemplos de código.

Btibert3
fuente

Respuestas:

30

Creo que la mejor manera para usted sería instalar el sistema de empaquetado de Python como "python-pip". Puede instalarlo con Synaptic o Ubuntu Software Center.

Pip le permitirá instalar y desinstalar fácilmente paquetes de Python, simplemente como pip install package. En su caso, sería algo así desde la terminal:

sudo pip install tweeststream
zetah
fuente
3
Esto está bien para paquetes simples, pero no tan bueno para paquetes más grandes, por ejemplo, numpy
hayd
@hayd: ¿por qué? ¿Está relacionado con askubuntu.com/questions/595366/…
naught101
2
@ naught101 Creo que probablemente quise decir scipy, no estoy seguro si está relacionado ... parece que pip es demasiado tarde en el camino de Python. Recomiendo encarecidamente usar anaconda / conda, es muy superior a pip IMO.
hayd
2
En mi humilde opinión, sudo pip <anything>debe usarse con mucho cuidado. Como tweetstreamno está en el Centro de software de Ubuntu , recomiendo usar un virtualenv . tweetstreamsetup.py requiere anyjsonque sea un paquete de Ubuntu . No instalar tweetstream en un virtualenvpuede causar que otras aplicaciones de Ubuntu que dependen anyjsonde fallar. Solucionar problemas difíciles.
Mark Mikofski
9
Para repetir: no lo use sudo pipen Ubuntu. @ MarkMikofski: no necesita virtualenv (a menos que lo desee por alguna razón específica). python -mpip install --user package-namepuede instalar el paquete packafe-namepara el usuario actual. Si hay dependencias complejas (extensiones C grandes); puede instalarlos usando apt-get, para evitar instalar dependencias de compilación a menos que sea necesario.
jfs
37

actualizado: 2019-05-11: Esta publicación menciona principalmente virtualenv, pero de acuerdo con el documento de Python sobre la instalación del módulo , ya que Python 3.5 " venvahora se recomienda el uso para crear entornos virtuales", mientras que virtualenves una alternativa para las versiones de Python anteriores a 3.4 .

actualizado: 2018-08-17: desde conda-4.4.0 uso condapara activateanaconda en todas las plataformas

actualizado: 2017-03-27: PEP 513 - manylinuxbinarios para PyPI

actualizado: 2016-08-19: Opción de Anaconda Continua

Esto es algo duplicado de easy_install / pip o apt-get .

Para paquetes globales de Python, use el Centro de software de Ubuntu, apt, apt-get o synaptic

Ubuntu usa Python para muchas funciones importantes, por lo tanto, interferir con Python puede dañar su sistema operativo. Esta es la razón principal por la que nunca uso pipen mi sistema Ubuntu, pero en lugar de eso utilice cualquiera de Ubuntu Software Center, sináptica , apt-geto la más reciente simplemente apt, que todo por defecto instalar paquetes desde el repositorio de Ubuntu . Estos paquetes se prueban, generalmente precompilados para que se instalen más rápido y, en última instancia, estén diseñados para Ubuntu. Además, todas las dependencias requeridas también se instalan y se mantiene un registro de las instalaciones para que puedan revertirse. Creo que la mayoría de los paquetes tienen repositorios de Launchpad correspondientes para que pueda archivar problemas.

Otra razón para usar cualquiera de los paquetes de Ubuntu es que a veces estos paquetes de Python tienen diferentes nombres dependiendo de dónde los descargó. Python-chardet es un ejemplo de un paquete que en un momento se denominó una cosa en PyPI y otra en el repositorio de Ubuntu. Por lo tanto, hacer algo así pip install requestsno se dará cuenta de que Chardet ya está instalado en su sistema porque la versión de Ubuntu tiene un nombre diferente y, en consecuencia, instale una nueva versión que dañará su sistema de una manera insignificante pero aún así, ¿por qué haría eso?

En general, solo desea instalar código de confianza en su sistema operativo. Entonces deberías estar nervioso por escribir $ sudo pip <anything-could-be-very-bad>.

Por último, algunas cosas son más fáciles de instalar usando cualquiera de los paquetes de Ubuntu. Por ejemplo, si intenta pip install numpyinstalar numpy & scipy a menos que ya haya instalado gfortran, atlas-dev, blas-dev y lapack-dev, verá un flujo interminable de errores de compilación. Sin embargo, instalar numpy & scipy a través del repositorio de Ubuntu es tan fácil como ...

$ sudo apt-get install python-numpy python-scipy

Estás de suerte, porque estás usando Ubuntu, una de las distribuciones más actualizadas y con mayor soporte existente. Lo más probable es que cada paquete de Python que necesite esté en el repositorio de Ubuntu, y probablemente ya esté instalado en su máquina. Y cada 6 meses, se lanzará un nuevo ciclo de paquetes con la última distribución de Ubuntu.

Si está 100% seguro de que el paquete no interferirá con su sistema Ubuntu de ninguna manera, puede instalarlo usando pip y Ubuntu es lo suficientemente agradable como para mantener estos paquetes separados de los paquetes de distribución colocando los paquetes de distribución en una carpeta llamada dist-packages/. El repositorio de Ubuntu tiene pip, virtualenv y setuptools. Sin embargo, secundo la sugerencia de Wojciech de usar virtualenv.

Para proyectos personales de Python, use pip and wheel en virtualenv

Si necesita la última versión, o el módulo no está en el repositorio de Ubuntu, inicie virtualenv y use pip para instalar el paquete. Aunque pip y setuptools se han fusionado, se prefiere pip IMO en lugar de instalación fácil o distutils, porque siempre esperará hasta que el paquete se descargue y compile completamente antes de copiarlo en su sistema de archivos, y hace que la actualización o desinstalación sea muy fácil. En muchos sentidos, es similar a apt-get, ya que generalmente maneja bien las dependencias. Sin embargo, usted se puede tener para manejar algunas dependencias a sí mismo, pero desde PEP 513 fue adoptado en la actualidad hay manylinuxbinarios en el índice de paquetes de Python (PyPI) para distribuciones de Linux populares como Ubuntu y Fedora .por ejemplo, como se mencionó anteriormente para NumPy y SciPy, asegúrese de haber instalado gfortran, atlas-dev, blas-dev y lapack-dev desde el repositorio de Ubuntu Por ejemplo, tanto NumPy como SciPy ahora se distribuyen para Ubuntu como manylinuxruedas por defecto usando OpenBLAS en su lugar de ATLAS. Todavía puede construirlos desde el origen utilizando las opciones de pip --no-use-wheelo--no-binary <format control> .

~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy

Consulte la siguiente sección, "No está en sudoers", a continuación para instalar versiones actualizadas de pip, setuptools, virtualenv o wheels en su perfil personal utilizando el --useresquema de instalación con pip. Puede usar esto para actualizar pip para su uso personal como JF Sebastian indicó en su comentario a otra respuesta . NOTA: -mrealmente solo es necesario en MS Windows cuando se actualiza pip .

python -m pip install --user pip setuptools wheel virtualenv

Las versiones más nuevas de pip almacenan automáticamente en caché las ruedas, por lo que lo siguiente solo es útil para versiones anteriores de pip. Como puede terminar instalando estas muchas veces, considere usar la rueda con pip para crear una caseta de gobierno. La rueda ya está incluida virtualenvdesde la versión 13.0.0, por lo tanto, si su versión de virtualenves demasiado antigua, es posible que primero deba instalarla.

~(my_py_proj)$ pip install wheel  # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy

Esto creará archivos de rueda binarios <cwd>/wheelhouse, use -dpara especificar un directorio diferente. Ahora, si inicia otro virtualenv y necesita los mismos paquetes que ya ha creado, puede instalarlos desde su timonera utilizandopip install --find-links=<fullpath>/wheelhouse

Lea Instalación de módulos de Python en la documentación de Python e Instalación de paquetes en la página principal del índice de paquetes de Python . También pip , venv , virtualenv y wheel .

Si no estás dentro sudoersy virtualenvno está instalado.

Otra opción para el uso de un entorno virtual, o si está utilizando una cuota de Linux sin privilegios de root, a continuación, utilizando ya sea el --usero la --home=<wherever-you-want>instalación de Python esquemas con Python distutilsva a instalar los paquetes con el valor de site.USERBASEo al lugar que desee. Las versiones más recientes de pip también tienen una --useropción. No lo use sudo!

pip install --user virtualenv

Si su versión de Linux de pip es demasiado antigua, puede pasar las opciones de configuración mediante la --install-optioncual es útil para pasar opciones personalizadas a algunos setup.pyscripts para algunos paquetes que crean extensiones, como la configuración de PREFIX. Es posible que deba extraer la distribución y usarla distutilspara instalar el paquete a la antigua usanza escribiendo python setup install [options]. Leer algo de la documentación de instalación y la distutilsdocumentación puede ayudar.

Python es lo suficientemente agradable como para agregarle site.USERBASEa usted PYTHONPATHpor delante de cualquier otra cosa, por lo que los cambios solo lo afectarán. Un lugar popular para --homees ~/.local. Consulte la guía de instalación del módulo Python para conocer la estructura exacta del archivo y específicamente dónde están los paquetes de su sitio. Nota : si se utiliza el --homeesquema de instalación a continuación, puede que tenga que añadirlo a la PYTHONPATHvariable de entorno utilizando exporten su .bashrc, .bash_profileo en su cáscara para sus paquetes localizados a estar disponible en Python.

Utilice Python continuo de Anaconda para matemáticas, ciencias, datos o proyectos personales

Si está utilizando Python para matemáticas, ciencias o datos, entonces IMO, una muy buena opción es la distribución Anaconda-Python o la distribución miniconda más básica lanzada por Anaconda, Inc. (anteriormente conocida como Continuum Analytics ) . Aunque cualquiera podría beneficiarse del uso de Anaconda para proyectos personales, la instalación predeterminada incluye más de 500 paquetes de matemáticas y ciencias como NumPy, SciPy, Pandas y Matplotlib , mientras que miniconda solo instala Anaconda-Python y el administrador de entorno de conda. Anaconda solo se instala en su perfil personal, es decir , /home/<user>/y altera su ruta ~/.bashrco la ~/.bash_profilede anteponer el camino de Anaconda a su $PATH fuente recomendada personalconda.shen su ~/.bashrcque le permite utilizar conda activate <env|default is base>para iniciar Anaconda - esto sólo afecta a usted - la ruta del sistema no se ha modificado . ¡Por losudo tanto , no necesita acceso de root ni usar Anaconda! Si ya ha agregado Anaconda-Python, miniconda o conda a su ruta personal, debe eliminar la PATHexportación de su ~/.bashrcy actualizar a la nueva recomendación , por lo que su sistema Python será el primero nuevamente.

Esto es algo similar a la --useropción que expliqué en la última sección, excepto que se aplica a Python en su conjunto y no solo a los paquetes. Por lo tanto, Anaconda está completamente separada de su sistema Python , no interferirá con su sistema Python, y solo usted puede usarlo o cambiarlo. Dado que instala una nueva versión de Python y todas sus bibliotecas, necesitará al menos 200 MB de espacio, pero es muy inteligente sobre el almacenamiento en caché y la administración de bibliotecas, lo cual es importante para algunas de las cosas interesantes que puede hacer con Anaconda.

Anaconda cura una colección de binarios y bibliotecas de Python requeridas por las dependencias en un repositorio en línea (anteriormente llamado binstar ) , y también alojan paquetes de usuarios como diferentes "canales". El administrador de paquetes utilizado por Anaconda, condapor defecto instala paquetes de Anaconda, pero puede señalar un "canal" diferente usando la -copción.

Instalar paquetes con condasolo como pip:

$ conda install -c pvlib pvlib  # install pvlib pkg from pvlib channel

¡Pero condapuede hacer mucho más! También puede crear y administrar entornos virtuales al igual que virtualenv. Por lo tanto, dado que Anaconda crea entornos virtuales, el pipadministrador de paquetes se puede usar para instalar paquetes desde PyPI en un entorno de Anaconda sin root o sudo. ¡No lo use sudocon Anaconda! ¡Advertencia! Sin embargo, tenga cuidado al mezclar pipy condaen un entorno Anaconda, b / c tendrá que administrar las dependencias del paquete con más cuidado. Otra opción para pipen un entorno conda es usar el canal conda-forge, pero también es mejor hacerlo en un entorno conda nuevo con conda-forge como canal predeterminado. Como último recurso, si no puede encontrar un paquete en otro lugar que no sea PyPI, considere usarlo e --no-depsinstale las dependencias restantes manualmente conda.

Anaconda también es similar en algunos aspectos a Ruby RVM si está familiarizado con esa herramienta. Anaconda condatambién te permite crear entornos virtuales con diferentes versiones de Python . por ejemplo : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborncreará una pila científica / ciencia de datos usando Python-3.5 en un nuevo entorno llamado py35sci. Puede cambiar entornos utilizando conda. Desde conda-4.4.0, esto ahora es diferente a virtualenvque utiliza source venv/bin/activate, pero anterior a conda-4.4.0 los condacomandos eran el mismo como virtualenvy también se utiliza source:

# AFTER conda-4.4 
~/Projects/myproj $ conda activate py35sci

# BEFORE conda-4.4 
~/Projects/myproj $ source activate py35sci

¡Pero espera hay mas! Anaconda también puede instalar diferentes lenguajes como R para programación estadística desde el canal Anacondar . Incluso puede configurar su propio canal para cargar distribuciones de paquetes creadas para conda . Como se mencionó, conda-forge mantiene compilaciones automatizadas de muchos de los paquetes en PyPI en el canal Anaconda de conda-forge .

Epílogo

Hay muchas opciones para mantener sus proyectos de Python en Linux dependiendo de sus necesidades personales y acceso. Sin embargo, si hay algo que espero que saque de esta respuesta es que casi nunca debería necesitar usar sudopara instalar paquetes de Python . El uso de sudodebe ser un olor que algo anda mal. Usted ha sido advertido.

¡Buena suerte y feliz codificación!

Mark Mikofski
fuente
Desearía haber leído esto antes de destruir la distribución de Python de mi sistema sudoing con pip. Gran redacción, gracias por esta información.
slhck
pip install numpydebería instalar todas las dependencias
Timo
@Timo, como mencioné en la actualización 2017-03-27 desde que PEP 513 fue implementado por muchos binarios linlinux disponibles en PyPI que están construidos con OpenBLAS, es decir , tienen las dependencias requeridas. Sin embargo, por regla general, pip install <package>solo instalará las dependencias del paquete Python que figuran en la install_requiressección de setup.py. Por ejemplo: la instalación de Jupyter no instalará la biblioteca de Haskell pandoc para exportar portátiles Jupyter como LaTeX, etc.
Mark Mikofski,
Por el contrario, conda install <package>probablemente instalará todas las dependencias, incluidas C / C ++, FORTRAN, etc., incluso las bibliotecas Haskell, porque conda no solo administra los paquetes de Python como pip, sino que también administra los entornos. Entonces, si tenía Anaconda o miniconda, conda install Jupyterinstala todo en el archivo de la recetameta.yml , incluida la biblioteca pandoc Haskell . Para más información ver PyPA
Mark Mikofski
10

Además de la incorporación de Novarchibald, generalmente es una buena idea crear un entorno virtual para su proyecto de Python e instalar dependencias en su interior. Esto le permite tener un mejor control sobre las dependencias y sus versiones. Para configurar un entorno virtual, ingrese:

virtualenv --no-site-packages --distribute my_python_project

Luego, actívelo con:

cd my_python_project
source bin/activate

En este punto, todo lo que instale con pip se mantendrá dentro de este entorno virtual. Si desea instalar algo globalmente, primero debe salir de virtualenv con:

deactivate

Puede encontrar más información sobre virtualenv aquí .

Voitek Zylinski
fuente
1
Alternativamente: usando el pip del directorio bin virtualenv (aquí my_python_project / bin / pip) mantiene ese entorno, sin necesidad de "activarlo". Luego, el uso de cualquiera de los scripts instalados en el contenedor es usar dado virutalenv. "activar" solo es útil para hacer llamadas a "python", "easy_install" y "pip" usando bin específico virtualenv.
Jan Vlcinsky
Los documentos de instalación de Python dicen usar "pyvenv" para crear entornos virtuales específicos de un proyecto; pero ese virtualenv es una alternativa para proyectos que usan una versión anterior de python, docs.python.org/3/installing/index.html?highlight=pip .
pbhj
2
Tenga en cuenta que las virtualenvopciones --no-site-packagesy --distributeestán en desuso hoy en día y ya no tienen efecto.
Forraje
4

Además de la respuesta de Zetah'a, el comando para instalar python-pip desde la terminal es:

sudo apt-get install python-pip
Novarchibald
fuente
1

Pruebe esto Un marco GUI para PIP desarrollado usando PyQt4

Un marco GUI para PIP desarrollado usando PyQt4

La pantalla de inicio

ingrese la descripción de la imagen aquí

La pantalla de inicio contiene opciones para que un usuario seleccione el proceso que desea llevar a cabo.

También se puede especificar la versión de python en la que desea que se realicen las operaciones.

El menú de archivo tiene una opción para "Salir" (acceso directo: Ctrl + Q) y "Actualizar listas" que actualiza los archivos de recursos que contienen datos del paquete.

La pantalla de instalación

ingrese la descripción de la imagen aquí

La pantalla de instalación tiene una barra de búsqueda que el usuario puede usar para buscar e instalar los paquetes deseados.

La pantalla de actualización

ingrese la descripción de la imagen aquí

La pantalla de actualización muestra la lista de paquetes que están desactualizados y se pueden actualizar.

El desinstalar Screem

ingrese la descripción de la imagen aquí

La pantalla de desinstalación muestra la lista de paquetes que están instalados en el sistema del usuario y se pueden desinstalar.

La ventana de progreso

ingrese la descripción de la imagen aquí

La ventana de progreso es un widget de terminal incorporado para PIP-GUI que muestra los procesos que se ejecutan mientras se realizan las operaciones.

gavisic
fuente
1
Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Kevin Bowen