Usar el pip de Python para administrar las dependencias de sus proyectos

Este tutorial tiene un curso de video relacionado creado por el equipo de Real Python. Míralo junto con el tutorial escrito para profundizar tu comprensión: Una guía para principiantes para Pip

El gestor de paquetes estándar para Python espip. Le permite instalar y administrar paquetes que no forman parte de la biblioteca estándar de Python. Si estás buscando una introducción apip¡Entonces has venido al lugar correcto!

En este tutorial, aprenderás a:

  • Configurarpipen su entorno de trabajo
  • Corregir errores comunes relacionados con el trabajo conpip
  • Instalar y desinstalar paquetes conpip
  • Administrar las dependencias de los proyectos mediante archivos de requisitos

Puedes hacer mucho conpip, pero la comunidad Python es muy activa y ha creado algunas alternativaspip. Usted aprenderá acerca de ellos más adelante en este tutorial.

Bono gratuito: 5 pensamientos sobre la maestría de Python, un curso gratuito para desarrolladores de Python que te muestra la hoja de ruta y la mentalidad que necesitarás para llevar tus habilidades de Python al siguiente nivel.

Empezando conpip

Entonces, ¿qué hace exactamentepip¿Sí?pipEs un gestor de paquetes para Python. Eso significa que es una herramienta que le permite instalar y administrar bibliotecas y dependencias que no se distribuyen como parte de la biblioteca estándar. El nombre pip fue introducido por Ian Bicking en 2008:

He terminado de renombrar pyinstall a su nuevo nombre: pip. El nombre pip es [un] acrónimo y declaración: pip installs packages. (Fuente)

La gestión de paquetes es tan importante que los instaladores de Python han incluidopipdesde las versiones 3.4 y 2.7.9, para Python 3 y Python 2, respectivamente. Muchos proyectos de Python usanpipEsto lo convierte en una herramienta esencial para cualquier pythonista.

El concepto de un administrador de paquetes puede ser familiar para usted si viene de otro lenguaje de programación. JavaScript usa npm para la administración de paquetes, Ruby usa gem y la plataforma .NET usa NuGet. En Python,pipse ha convertido en el gestor de paquetes estándar.

Hallazgopipen su sistema

El instalador de Python 3 le da la opción de instalarpipal instalar Python en su sistema. De hecho, la opción de instalarpipcon Python está marcada de forma predeterminada, por lo quepipdebería estar listo para su uso después de instalar Python.

Nota: En algunos sistemas Linux (Unix) como Ubuntu,pipviene en un paquete separado llamadopython3-pip, con el que tienes que instalarsudo apt install python3-pip. No se instala por defecto con el intérprete.

Usted puede verificar quepipestá disponible buscando elpip3ejecutable en su sistema. Seleccione su sistema operativo a continuación y utilice el comando específico de la plataforma en consecuencia:

  • Ventanas
  • Linux + macOS
C:> where pip3

LoswhereEl comando en Windows le mostrará dónde puede encontrar el ejecutable depip3. Si Windows no puede encontrar un ejecutable con nombrepip3, entonces también puedes intentar buscarpipSin los tres (3) al final.

$ which pip3

LoswhichEl comando en sistemas Linux y macOS le muestra dóndepip3Se encuentra el archivo binario.

En sistemas Windows y Unix,pip3Se puede encontrar en más de un lugar. Esto puede suceder cuando tiene varias versiones de Python instaladas. Si no encuentraspipen cualquier ubicación de su sistema, entonces puede considerar reinstalar pip.

En lugar de ejecutar su sistemapipdirectamente, también puede ejecutarlo como un módulo de Python. En la siguiente sección, aprenderás cómo.

Correrpipcomo un módulo

Cuando ejecutas tu sistemapipdirectamente, el comando en sí no revela qué versión de PythonpipPertenece a. Desafortunadamente, esto significa que podrías usarpipinstalar un paquete en los paquetes del sitio de una versión antigua de Python sin darse cuenta. Para evitar que esto suceda, puede ejecutarpipcomo un módulo Python:

$ python3 -m pip

Observa que utilizaspython3 -mpara correrpip. Los-mswitch le dice a Python que ejecute un módulo como ejecutable delpython3Intérprete. De esta manera, puede asegurarse de que su versión predeterminada de Python 3 ejecute elpipcomando. Si quieres saber más sobre esta forma de correrpip, entonces usted puede leer el artículo perspicaz de Brett Cannon sobre las ventajas de usarpython3 -m pip.

A veces es posible que desee ser más explícito y limitar los paquetes a un proyecto específico. En situaciones como esta, usted debe ejecutarpipdentro de un entorno virtual.

UsandopipEn un entorno virtual Python

Para evitar la instalación de paquetes directamente en la instalación de Python del sistema, puede usar un entorno virtual. Un entorno virtual proporciona un intérprete de Python aislado para su proyecto. Cualquier paquete que use dentro de este entorno será independiente de su intérprete de sistema. Esto significa que puede mantener las dependencias de su proyecto separadas de otros proyectos y del sistema en general.

Usandopipdentro de un entorno virtual tiene tres ventajas principales. Usted puede:

  1. Asegúrese de que está utilizando la versión correcta de Python para el proyecto en cuestión.
  2. Confíe en que se está refiriendo a la correctapipinstancia cuando se ejecutapipopip3
  3. Utilice una versión de paquete específica para su proyecto sin afectar a otros proyectos

Python 3 tiene la función integradavenvMódulo para la creación de entornos virtuales. Este módulo le ayuda a crear entornos virtuales con una instalación aislada de Python. Una vez que haya activado el entorno virtual, puede instalar paquetes en este entorno. Los paquetes que instala en un entorno virtual están aislados de todos los demás entornos de su sistema.

Puede seguir estos pasos para crear un entorno virtual y verificar quepipmódulo dentro del entorno recién creado:

  • Ventanas
  • Linux + macOS
C:> python -m venv venv
C:> venvScriptsactivate.bat
(venv) C:>  pip3 --version
pip 21.2.3 from ...libsite-packagespip (python 3.10)
(venv) C:>  pip --version
pip 21.2.3 from ...libsite-packagespip (python 3.10)
$ python3 -m venv venv
$ source venv/bin/activate
(venv) $ pip3 --version
pip 21.2.3 from .../python3.10/site-packages/pip (python 3.10)
(venv) $ pip --version
pip 21.2.3 from .../python3.10/site-packages/pip (python 3.10)

Aquí se crea un entorno virtual llamadovenvmediante el uso de Python incorporadovenvmódulo. Luego lo activan con elsourcecomando. Los paréntesis (()) rodeando suvenvnombre indica que ha activado correctamente el entorno virtual.

Por último, verifique la versión de lapip3pipejecutables dentro de su entorno virtual activado. Ambos apuntan a la mismapipmódulo, por lo que una vez que su entorno virtual está activado, puedepipopip3.

ReinstalaciónpipCuando se producen errores

Cuando se ejecuta elpipcomando, puede obtener un error en algunos casos. Su mensaje de error específico dependerá de su sistema operativo:

Mensaje de error del sistema operativo
Ventanas 'pip' is not recognized as an internal or external command,
operable program or batch file.
Linux bash: pip: command not found
macOS zsh: command not found: pip

Mensajes de error como estos indican que algo salió mal con la instalación depip.

Nota: Antes de iniciar cualquier solución de problemas cuando elpipEl comando no funciona, puedes probar usando elpip3con los tres (3) al final.

Obtener errores como los que se muestran arriba puede ser frustrante porquepipes vital para instalar y administrar paquetes externos. Algunos problemas comunes conpipestán relacionados con la forma en que se instaló esta herramienta en su sistema.

Aunque los mensajes de error para varios sistemas difieren, todos apuntan al mismo problema: su sistema no puede encontrarpipen los lugares listados en suPATHvariable. En Windows,PATHforma parte de las variables del sistema. En macOS y Linux,PATHforma parte de las variables de entorno. Puedes consultar el contenido de tuPATHVariable con este comando:

  • Ventanas
  • Linux + macOS
C:> echo %PATH%
$ echo $PATH

La salida de este comando mostrará una lista de ubicaciones (directorios) en su disco donde el sistema operativo busca programas ejecutables. Dependiendo de su sistema, las ubicaciones pueden estar separadas por dos puntos (:) o un punto y coma () .

De forma predeterminada, el directorio que contiene elpipEl ejecutable debe estar presente enPATHdespués de instalar Python o crear un entorno virtual. Sin embargo, faltapipes un tema común. Dos métodos compatibles pueden ayudarle a instalarpipDe nuevo y añádelo a tuPATH:

  1. Losensurepipmódulo
  2. Losget-pip.pyscript

LosensurepipEste módulo ha sido parte de la biblioteca estándar desde Python 3.4. Se agregó para proporcionar una forma sencilla de reinstalarpipsi, por ejemplo, te lo saltaste al instalar Python o lo desinstalastepipEn algún momento. Seleccione su sistema operativo a continuación y ejecuteensurepipen consecuencia:

  • Ventanas
  • Linux + macOS
C:> python -m ensurepip --upgrade
$ python3 -m ensurepip --upgrade

Sipipaún no está instalado, entonces este comando lo instala en su entorno Python actual. Si se encuentra en un entorno virtual activo, el comando instalapipen ese ambiente. De lo contrario, se instalapipglobalmente en su sistema. Los--upgradeLa opción garantiza que elpipversión es la misma que la declarada enensurepip.

Nota: LosensurepipEl módulo no accede a Internet. La última versión depipqueensurepippuede instalar es la versión que se incluye en la instalación de Python de su entorno. Por ejemplo, ejecutarensurepipInstalación de Python 3.10.0pip21.2.3. Si quieres una nuevapipversión, entonces tendrías que correr primeroensurepip. Después, puedes actualizarpipmanualmente a su última versión.

Otra forma de arreglar tupipLa instalación es utilizar elget-pip.pyguión. Losget-pip.pyarchivo contiene una copia completa depipcomo un archivo ZIP codificado. Usted puede descargarget-pip.pydirectamente desde la página de PyPA bootstrap. Una vez que tenga el script en su máquina, ejecute el script Python de la siguiente manera:

  • Ventanas
  • Linux + macOS
C:> python get-pip.py
$ python3 get-pip.py

Este script instalará la última versión depip,setuptools, wheelen su entorno Python actual. Si solo quieres instalarpip, entonces usted puede agregar el--no-setuptools--no-wheelopciones a su comando.

Si ninguno de los métodos anteriores funciona, entonces podría valer la pena intentar descargar la última versión de Python para su plataforma actual. Puede seguir la Guía de instalación y configuración de Python 3 para asegurarse de quepipestá instalado correctamente y funciona sin errores.

Instalación de paquetes conpip

Python se considera un lenguaje de baterías incluido. Esto significa que la biblioteca estándar de Python contiene un amplio conjunto de paquetes y módulos para ayudar a los desarrolladores con sus proyectos de codificación.

Al mismo tiempo, Python tiene una comunidad activa que contribuye con un conjunto aún más amplio de paquetes que pueden ayudarlo con sus necesidades de desarrollo. Estos paquetes se publican en el Python Package Index, también conocido como PyPI (pronunciado Pie Pea Eye).

PyPI alberga una extensa colección de paquetes, incluidos marcos de desarrollo, herramientas y bibliotecas. Muchos de estos paquetes proporcionan interfaces amigables para la funcionalidad de la biblioteca estándar de Python.

ndice de paquetes de Python (PyPI)

Uno de los muchos paquetes que los hosts PyPI se llamarequests. Losrequestsbiblioteca le ayuda a interactuar con los servicios web mediante la abstracción de las complejidades de las solicitudes HTTP. Usted puede aprender todo acerca derequestsen su sitio de documentación oficial.

Cuando se quiere utilizar elrequestspaquete en su proyecto, primero debe instalarlo en su entorno. Si no desea instalarlo en los paquetes de sitio de Python de su sistema, primero puede crear un entorno virtual, como se muestra arriba.

Una vez que haya creado el entorno virtual y lo haya activado, el símbolo de línea de comandos muestra el nombre del entorno virtual dentro de los paréntesis. CualquierapipLos comandos que realice a partir de ahora ocurrirán dentro de su entorno virtual.

Para instalar paquetes,pipproporciona uninstallcomando. Puede ejecutarlo para instalar elrequestspaquete:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install requests
(venv) $ python3 -m pip install requests

En este ejemplo, ejecutaspipCon elinstallcomando seguido del nombre del paquete que desea instalar. Lospipcomando busca el paquete en PyPI, resuelve sus dependencias e instala todo en su entorno Python actual para asegurarse de querequestsfuncionará.

Lospip install El comando siempre busca la última versión del paquete y la instala. También busca las dependencias enumeradas en los metadatos del paquete y las instala para asegurarse de que el paquete tiene todos los requisitos que necesita.

También es posible instalar varios paquetes en un solo comando:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install rptree codetiming
(venv) $ python3 -m pip install rptree codetiming

Encadenando los paquetesrptreecodetimingen elpip installcomando, instala ambos paquetes a la vez. Puede agregar tantos paquetes como desee a lapip installcomando. En casos como este, arequirements.txtarchivo puede ser útil. Más adelante en este tutorial, aprenderás a usar unrequirements.txtarchivo para instalar muchos paquetes a la vez.

Nota: A menos que el número de versión específico de un paquete sea relevante para este tutorial, notará que la cadena de versión toma la forma genérica dex.y.z. Este es un formato de marcador de posición y puede significar3.1.4,2.9o cualquier otro número de versión. Cuando lo siga, la salida en su terminal mostrará los números de versión de su paquete real.

Usted puede utilizar ellistcomando para mostrar los paquetes instalados en su entorno, junto con sus números de versión:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip list
Package            Version
------------------ ---------
certifi            x.y.z
charset-normalizer x.y.z
codetiming         x.y.z
idna               x.y.z
pip                x.y.z
requests           x.y.z
rptree             x.y.z
setuptools         x.y.z
urllib3            x.y.z
(venv) $ python3 -m pip list
Package            Version
------------------ ---------
certifi            x.y.z
charset-normalizer x.y.z
idna               x.y.z
pip                x.y.z
requests           x.y.z
setuptools         x.y.z
urllib3            x.y.z

Lospip listcomando representa una tabla que muestra todos los paquetes instalados en su entorno actual. La salida anterior muestra la versión de los paquetes usando unx.y.zformato de marcador de posición. Cuando se ejecuta elpip listen tu entorno,pipmuestra el número de versión específico que ha instalado para cada paquete.

Para obtener más información acerca de un paquete específico, puede ver los metadatos del paquete mediante el uso de lashowcomando enpip:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip show requests
Name: requests
Version: x.y.z
Summary: Python HTTP for Humans.
    ...
Requires: certifi, idna, charset-normalizer, urllib3
Required-by:
(venv) $ python3 -m pip show requests
Name: requests
Version: x.y.z
Summary: Python HTTP for Humans.
    ...
Requires: certifi, idna, charset-normalizer, urllib3
Required-by:

La salida de este comando en su sistema enumerará los metadatos del paquete. LosRequirespaquetes de listas de líneas, tales comocertifi,idna,charset-normalizer, urllib3. Estos fueron instalados porquerequestsdepende de ellos para que funcionen correctamente.

Ahora que has instaladorequestsy sus dependencias, puede importarlo como cualquier otro paquete normal en su código Python. Inicie el intérprete interactivo de Python e importe elrequestspaquete:

>>> import requests
>>> requests.__version__
"x.y.z"

Después de iniciar el intérprete interactivo de Python, ha importado elrequestsmódulo. Llamandorequests.__version__, verificaste que estabas usando elrequestsmódulo dentro de su entorno virtual.

Uso de un índice de paquetes personalizados

Por defecto,piputiliza PyPI para buscar paquetes. PeropipTambién le da la opción de definir un índice de paquete personalizado.

Usandopipcon un índice personalizado puede ser útil cuando el dominio PyPI está bloqueado en su red o si desea trabajar con paquetes que no están disponibles públicamente. A veces, los administradores del sistema también crean su propio índice interno de paquetes para controlar mejor qué versiones de paquetes están disponibles.pipusuarios en la red de la empresa.

Un índice de paquete personalizado debe cumplir con PEP 503 – API de repositorio simple para trabajar conpip. Puede tener una impresión de cómo se ve una API (Interfaz de programación de aplicaciones) visitando el ndice simple de PyPI, pero tenga en cuenta que esta es una página grande con mucho contenido difícil de analizar. Cualquier índice personalizado que siga la misma API se puede orientar con el--index-urlopción. En lugar de escribir--index-url, también puede utilizar el-itaquigrafía.

Por ejemplo, para instalar elrptreeherramienta desde el índice del paquete TestPyPI, puede ejecutar el siguiente comando:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install -i https://test.pypi.org/simple/ rptree
(venv) $ python3 -m pip install -i https://test.pypi.org/simple/ rptree

Con el-iopción, usted dicepippara ver un índice de paquete diferente en lugar de PyPI, el predeterminado. Aquí, usted está instalandorptreede TestPyPI en lugar de de PyPI. Puede usar TestPyPI para ajustar el proceso de publicación de sus paquetes de Python sin saturar el índice del paquete de producción en PyPI.

Si necesita utilizar un índice alternativo de forma permanente, puede establecer elindex-urlLa opción en elpiparchivo de configuración. Este archivo se llamapip.conf, y puede encontrar su ubicación ejecutando el siguiente comando:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip config list -vv
(venv) $ python3 -m pip config list -vv

Con elpip config listcomando, puede listar la configuración activa. Este comando solo genera algo cuando tiene configuradas las configuraciones personalizadas. De lo contrario, la salida está vacía. Es entonces cuando el aditivo--verbose, o-vv, opción puede ser útil. Cuando agregas-vv,piple muestra dónde busca los diferentes niveles de configuración.

Si quieres añadir unpip.confarchivo, a continuación, puede elegir una de las ubicaciones quepip config list -vvlistada. Apip.confarchivo con un índice de paquete personalizado se ve así:

# pip.conf

[global]
index-url = https://test.pypi.org/simple/

Cuando usted tiene unpip.confarchivo como este,pipUtilizará el definidoindex-urlpara buscar paquetes. Con esta configuración, no es necesario utilizar el--index-urlopción en supip installcomando para especificar que solo desea paquetes que se pueden encontrar en la API simple de TestPyPI.

Instalar paquetes desde sus repositorios de GitHub

No está limitado a paquetes alojados en PyPI u otros índices de paquetes.pipTambién ofrece la opción de instalar paquetes desde un repositorio de GitHub. Pero incluso cuando un paquete está alojado en PyPI, como el generador de árbol de directorios Real Python, puede optar por instalarlo desde su repositorio Git:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install git+https://github.com/realpython/rptree
(venv) $ python3 -m pip install git+https://github.com/realpython/rptree

Con elgit+httpsEn este esquema, puede apuntar a un repositorio de Git que contiene un paquete instalable. Puede verificar que instaló el paquete correctamente ejecutando un intérprete interactivo de Python e importandorptree:

>>> import rptree
>>> rptree.__version__
"x.y.z"

Después de iniciar el intérprete interactivo de Python, importa elrptreemódulo. Llamandorptree.__version__, verificas que estás usando elrptreemódulo que se basa en su entorno virtual.

Nota: Si está utilizando un sistema de control de versiones (VCS) que no sea Git,pipTe tiene cubierto. Para aprender a usarpipcon Mercurial, Subversion o Bazaar, consulte el capítulo de Soporte de VCS delpipdocumentación.

Instalar paquetes desde un repositorio Git puede ser útil si el paquete no está alojado en PyPI pero tiene un repositorio Git remoto. El repositorio remoto al que apuntaspipincluso puede ser alojado en un servidor Git interno en la intranet de su empresa. Esto puede ser útil cuando estás detrás de un firewall o tienes otras restricciones para tus proyectos de Python.

Instalación de paquetes en modo editable para facilitar el desarrollo

Cuando se trabaja en su propio paquete, instalarlo en un modo editable puede tener sentido. Al hacer esto, puede trabajar en el código fuente mientras usa su línea de comandos como lo haría en cualquier otro paquete. Un flujo de trabajo típico es clonar primero el repositorio y luego usarpippara instalarlo como un paquete editable en su entorno:

  • Ventanas
  • Linux + macOS
 1C:> git clone https://github.com/realpython/rptree
 2C:> cd rptree
 3C:rptree> python3 -m venv venv
 4C:rptree> venvScriptsactivate.bat
 5(venv) C:rptree> python -m pip install -e .
 1$ git clone https://github.com/realpython/rptree
 2$ cd rptree
 3$ python3 -m venv venv
 4$ source venv/bin/activate
 5(venv) $ python3 -m pip install -e .

Con los comandos anteriores, instalaste elrptreepaquete como un módulo editable. Aquí hay un desglose paso a paso de las acciones que acaba de realizar:

  1. Línea 1 clonó el repositorio Git delrptreepaquete.
  2. La línea 2 cambió el directorio de trabajo arptree/.
  3. Las líneas 3 y 4 crearon y activaron un entorno virtual.
  4. La línea 5 instaló el contenido del directorio actual como un paquete editable.

Los-eLa opción es una abreviatura para el--editableopción. Cuando se utiliza el-eopción conpip install, tu dicespipque desea instalar el paquete en modo editable. En lugar de usar un nombre de paquete, usa un punto (.) hasta el puntopiphacia el directorio actual.

Si no hubieras utilizado el-ebandera,piphabría instalado el paquete normalmente en su entornosite-packages/carpeta. Cuando instala un paquete en modo editable, está creando un enlace en los paquetes de sitio a la ruta del proyecto local:

 ~/rptree/venv/lib/python3.10/site-packages/rptree.egg-link

Usando elpip installCon el paso del tiempo.-eLa bandera es solo una de las muchas opciones quepip installofertas. Usted puede comprobar hacia fuerapip installejemplos en elpipdocumentación. Allí aprenderá cómo instalar versiones específicas de un paquete o punto.pipa un índice diferente que no es PyPI.

En la siguiente sección, aprenderá cómo los archivos de requisitos pueden ayudar con supipflujos de trabajo.

Uso de archivos de requisitos

Lospip installEl comando siempre instala la última versión publicada de un paquete, pero a veces el código requiere una versión específica del paquete para funcionar correctamente.

Desea crear una especificación de las dependencias y versiones que utilizó para desarrollar y probar su aplicación para que no haya sorpresas cuando use la aplicación en producción.

Requerimientos de fijación

Cuando comparte su proyecto Python con otros desarrolladores, es posible que desee que utilicen las mismas versiones de paquetes externos que está utilizando. Tal vez una versión específica de un paquete contiene una nueva característica en la que confía, o la versión de un paquete que está utilizando es incompatible con las versiones anteriores.

Estas dependencias externas también se denominan requisitos. A menudo encontrará proyectos de Python que fijan sus requisitos en un archivo llamadorequirements.txto similar. El formato de archivo de requisitos le permite especificar con precisión qué paquetes y versiones deben instalarse.

Correrpip helpmuestra que hay afreezecomando que genera los paquetes instalados en formato de requisitos. Puede usar este comando, redirigiendo la salida a un archivo para generar un archivo de requisitos:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip freeze > requirements.txt
(venv) $ python3 -m pip freeze > requirements.txt

Este comando crea unrequirements.txten su directorio de trabajo con el siguiente contenido:

certifi==x.y.z
charset-normalizer==x.y.z
idna==x.y.z
requests==x.y.z
urllib3==x.y.z

Recuerda quex.y.zque se muestra arriba es un formato de marcador de posición para las versiones del paquete. Turequirements.txtEl archivo contendrá números de versión reales.

LosfreezeEl comando volca el nombre y la versión de los paquetes instalados actualmente en la salida estándar. Puede redirigir la salida a un archivo que luego puede usar para instalar sus requisitos exactos en otro sistema. Puede nombrar el archivo de requisitos lo que quiera. Sin embargo, una convención ampliamente adoptada es nombrarlorequirements.txt.

Cuando desee replicar el entorno en otro sistema, puede ejecutarpip install, utilizando el-rswitch para especificar el archivo de requisitos:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install -r requirements.txt
(venv) $ python3 -m pip install -r requirements.txt

En el comando anterior, usted dicepippara instalar los paquetes listados enrequirements.txten su entorno actual. Las versiones del paquete coincidirán con las restricciones de la versión que elrequirements.txtarchivo contiene. Puedes correrpip listpara mostrar los paquetes que acaba de instalar, con sus números de versión:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip list

Package            Version
------------------ ---------
certifi            x.y.z
charset-normalizer x.y.z
idna               x.y.z
pip                x.y.z
requests           x.y.z
setuptools         x.y.z
urllib3            x.y.z
(venv) $ python3 -m pip list

Package            Version
------------------ ---------
certifi            x.y.z
charset-normalizer x.y.z
idna               x.y.z
pip                x.y.z
requests           x.y.z
setuptools         x.y.z
urllib3            x.y.z

¡Ya estás listo para compartir tu proyecto! Puedes enviarrequirements.txten un sistema de control de versiones como Git y utilizarlo para replicar el mismo entorno en otras máquinas. Pero espera, ¿qué pasa si se lanzan nuevas actualizaciones para estos paquetes?

Requisitos de ajuste

El problema con la codificación rígida de las versiones y dependencias de sus paquetes es que los paquetes se actualizan con frecuencia con correcciones de errores y seguridad. Es probable que desee aprovechar esas actualizaciones tan pronto como se publiquen.

El formato de archivo de requisitos le permite especificar versiones de dependencia utilizando operadores de comparación que le brindan cierta flexibilidad para garantizar que los paquetes se actualicen mientras define la versión base de un paquete.

Abrirrequirements.txten su editor favorito y gire a los operadores de igualdad (==) en mayor o igual que los operadores (>=), como en el siguiente ejemplo:

# requirements.txt

certifi>=x.y.z
charset-normalizer>=x.y.z
idna>=x.y.z
requests>=x.y.z
urllib3>=x.y.z

Puede cambiar el operador de comparación a>=decirpippara instalar una versión exacta o superior que se haya publicado. Cuando se establece un nuevo entorno mediante el uso de larequirements.txtarchivo,pipbusca la última versión que satisfaga el requisito y la instala.

A continuación, puede actualizar los paquetes en su archivo de requisitos ejecutando elinstallCon el paso del tiempo.--upgradeEl interruptor o el-Utaquigrafía:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install -U -r requirements.txt
(venv) $ python3 -m pip install -U -r requirements.txt

Si una nueva versión está disponible para un paquete listado, entonces el paquete será actualizado.

En un mundo ideal, las nuevas versiones de paquetes serían compatibles con versiones anteriores y nunca introducirían nuevos errores. Desafortunadamente, las nuevas versiones pueden introducir cambios que romperán su aplicación. Para ajustar sus requisitos, la sintaxis del archivo de requisitos admite especificadores de versión adicionales.

Imagina que una nueva versión,3.0, derequestsse publica, pero introduce un cambio incompatible que rompe su aplicación. Puede modificar el archivo de requisitos para evitar3.0o superior de ser instalado:

# requirements.txt

certifi==x.y.z
charset-normalizer==x.y.z
idna==x.y.z
requests>=x.y.z, <3.0
urllib3==x.y.z

Cambiar el especificador de versión para elrequestsasegura que cualquier versión mayor o igual que3.0No se instala. LospipLa documentación proporciona una amplia información sobre el formato de archivo de requisitos, y puede consultarla para obtener más información.

Separar las dependencias de producción y desarrollo

No todos los paquetes que instale durante el desarrollo de sus aplicaciones serán dependencias de producción. Por ejemplo, es probable que desee probar su aplicación, por lo que necesita un marco de prueba. Un marco popular para las pruebas espytest. Desea instalarlo en su entorno de desarrollo, pero no lo desea en su entorno de producción, porque no es una dependencia de producción.

Usted crea un segundo archivo de requisitos,requirements_dev.txt, para enumerar herramientas adicionales para configurar un entorno de desarrollo:

# requirements_dev.txt

pytest>=x.y.z

Tener dos archivos de requisitos exigirá que utilicepipInstalar ambos,requirements.txtrequirements_dev.txt. Afortunadamente,piple permite especificar parámetros adicionales dentro de un archivo de requisitos, por lo que puede modificarrequirements_dev.txtpara instalar también los requisitos de la producciónrequirements.txtarchivo:

# requirements_dev.txt

-r requirements.txt
pytest>=x.y.z

Tenga en cuenta que usted utiliza el mismo-rcambiar para instalar la producciónrequirements.txtarchivo. Ahora, en su entorno de desarrollo, solo tiene que ejecutar este único comando para instalar todos los requisitos:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install -r requirements_dev.txt
(venv) $ python3 -m pip install -r requirements_dev.txt

Porquerequirements_dev.txtcontiene el-r requirements.txtlínea, instalarás no solopytestsino también los requisitos fijados derequirements.txt. En un entorno de producción, es suficiente instalar solo los requisitos de producción:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip install -r requirements.txt
(venv) $ python3 -m pip install -r requirements.txt

Con este comando, instala los requisitos enumerados enrequirements.txt. A diferencia de su entorno de desarrollo, su entorno de producción no tendrápytestinstalado.

Requisitos de congelación para la producción

Ha creado los archivos de requisitos de producción y desarrollo y los ha añadido al control de código fuente. Estos archivos utilizan especificadores de versión flexibles para asegurarse de aprovechar las correcciones de errores publicadas por sus dependencias. También ha probado su aplicación y ahora está listo para implementarla en producción.

Usted sabe que todas las pruebas pasan y la aplicación funciona con las dependencias que utilizó en su proceso de desarrollo, por lo que probablemente desee asegurarse de implementar versiones idénticas de dependencias en la producción.

Los especificadores de versiones actuales no garantizan que las versiones idénticas se implementen en la producción, por lo que desea congelar los requisitos de producción antes de lanzar su proyecto.

Después de que haya terminado el desarrollo con sus requisitos actuales, un flujo de trabajo para crear una nueva versión de su proyecto actual puede verse así:

StepCommandExplicación
1 pytest Ejecute sus pruebas y verifique que su código esté funcionando correctamente.
2 pip install -U -r requirements.txt Actualice sus requisitos a versiones que coincidan con las restricciones de surequirements.txtarchivo.
3 pytest Ejecute sus pruebas y considere degradar cualquier dependencia que haya introducido errores en su código.
4 pip freeze > requirements_lock.txt Una vez que el proyecto funcione correctamente, congele las dependencias en unrequirements_lock.txtarchivo.

Con un flujo de trabajo como este, elrequirements_lock.txtarchivo contendrá especificadores de versión exacta y se puede utilizar para replicar su entorno. Usted se ha asegurado de que cuando sus usuarios instalen los paquetes enumerados enrequirements_lock.txtEn sus propios entornos, usarán las versiones que pretendes que usen.

Congelar sus requisitos es un paso importante para garantizar que su proyecto de Python funcione de la misma manera para sus usuarios en sus entornos como lo hizo en el suyo.

Desinstalación de paquetes conpip

De vez en cuando, tendrás que desinstalar un paquete. O encontraste una mejor biblioteca para reemplazarla, o es algo que no necesitas. La desinstalación de paquetes puede ser un poco complicada.

Tenga en cuenta que cuando se instalarequests, tienespipInstalar otras dependencias también. Cuantos más paquetes instale, mayor será la posibilidad de que varios paquetes dependan de la misma dependencia. Aquí es donde elshowcomando enpipEs muy útil.

Antes de desinstalar un paquete, asegúrese de ejecutar elshowcomando para ese paquete:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip show requests

Name: requests
Version: 2.26.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: [email protected]
License: Apache 2.0
Location: .../python3.9/site-packages
Requires: certifi, idna, charset-normalizer, urllib3
Required-by:
(venv) $ python3 -m pip show requests

Name: requests
Version: 2.26.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: [email protected]
License: Apache 2.0
Location: .../python3.9/site-packages
Requires: certifi, idna, charset-normalizer, urllib3
Required-by:

Fíjate en los dos últimos campos,RequiresRequired-by. LosshowEl comando te dice querequestsrequierecertifi,idna,charset-normalizer, urllib3. Es probable que desee desinstalarlos también. Observe querequestsNo es requerido por ningún otro paquete. Por lo tanto, es seguro desinstalarlo.

Usted debe ejecutar elshowOrden contra todos losrequestsdependencias para asegurar que ninguna otra biblioteca también dependa de ellas. Una vez que entienda el orden de dependencia de los paquetes que desea desinstalar, puede eliminarlos utilizando eluninstallcomando:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip uninstall certifi
(venv) $ python3 -m pip uninstall certifi

Losuninstallcomando le muestra los archivos que se eliminarán y le pide confirmación. Si está seguro de que desea eliminar el paquete porque ha comprobado sus dependencias y sabe que nada más lo está usando, puede pasar un-ypara suprimir la lista de archivos y el cuadro de diálogo de confirmación:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip uninstall urllib3 -y
(venv) $ python3 -m pip uninstall urllib3 -y

Aquí se desinstalaurllib3. Usando el-yswitch, suprime el cuadro de diálogo de confirmación que le pregunta si desea desinstalar este paquete.

En una sola llamada, puede especificar todos los paquetes que desea desinstalar:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip uninstall -y charset-normalizer idna requests
(venv) $ python3 -m pip uninstall -y charset-normalizer idna requests

Puede pasar en varios paquetes a lapip uninstallcomando. Si no agregaste ningún interruptor adicional, entonces tendrías que confirmar la desinstalación de cada paquete. Al pasar el-ycambiar, puede desinstalarlos todos sin ningún diálogo de confirmación.

También puede desinstalar todos los paquetes enumerados en un archivo de requisitos proporcionando el-r opción. Este comando le pedirá una solicitud de confirmación para cada paquete, pero puede suprimirlo con el comando-yinterruptor:

  • Ventanas
  • Linux + macOS
(venv) C:> python -m pip uninstall -r requirements.txt -y
(venv) $ python3 -m pip uninstall -r requirements.txt -y

Recuerde comprobar siempre las dependencias de los paquetes que desea desinstalar. Es probable que desee desinstalar todas las dependencias, pero desinstalar un paquete utilizado por otros romperá su entorno de trabajo. En consecuencia, es posible que su proyecto ya no funcione correctamente.

Si está trabajando en un entorno virtual, puede ser menos trabajo crear un nuevo entorno virtual. A continuación, puede instalar los paquetes que necesita en lugar de intentar desinstalar los paquetes que no necesita. Sin embargo,pip uninstallpuede ser realmente útil cuando necesite desinstalar un paquete de su instalación de Python del sistema. Usandopip uninstalles una buena manera de ordenar su sistema si accidentalmente instala un paquete en todo el sistema.

Explorando alternativas parapip

La comunidad de Python proporciona excelentes herramientas y bibliotecas para que las uses más allá.pip. Esto incluye alternativas apipque tratan de simplificar y mejorar la gestión de paquetes.

Estas son algunas otras herramientas de administración de paquetes que están disponibles para Python:

Descripción de la herramienta
Conda Conda es un gestor de paquetes, dependencias y entornos para muchos lenguajes, incluyendo Python. Viene de Anaconda, que comenzó como un paquete de ciencia de datos para Python. En consecuencia, es ampliamente utilizado para aplicaciones de ciencia de datos y aprendizaje automático. Conda opera su propio índice para alojar paquetes compatibles.
Poesía La poesía te resultará muy familiar si vienes de JavaScript y npm. Poetry va más allá de la administración de paquetes, lo que le ayuda a crear distribuciones para sus aplicaciones y bibliotecas e implementarlas en PyPI.
Pipenv Pipenv es otra herramienta de administración de paquetes que fusiona el entorno virtual y la administración de paquetes en una sola herramienta. Pipenv: A Guide to the New Python Packaging Tool es un excelente lugar para comenzar a aprender sobre Pipenv y su enfoque para la administración de paquetes.

Sólopipviene incluido en la instalación estándar de Python. Si desea utilizar las alternativas enumeradas anteriormente, debe seguir las guías de instalación en su documentación. Con tantas opciones, ¡seguro que encontrarás las herramientas adecuadas para tu viaje de programación!

Conclusión

Muchos proyectos de Python utilizan elpipadministrador de paquetes para gestionar sus dependencias. Se incluye con el instalador de Python, y es una herramienta esencial para la gestión de dependencias en Python.

En este tutorial, aprendiste cómo:

  • Configurar y ejecutarpipen su entorno de trabajo
  • Corregir errores comunes relacionados con el trabajo conpip
  • Instalar y desinstalar paquetes conpip
  • Define los requisitos para tus proyectos y aplicaciones
  • Dependencias de pin en los archivos de requisitos

Además, usted ha aprendido acerca de la importancia de mantener las dependencias al día y las alternativas a las dependencias.pipEsto puede ayudarle a manejar sus dependencias.

Echando un vistazo más de cerca apip, ha explorado una herramienta esencial en sus flujos de trabajo de desarrollo de Python. Conpip, puede instalar y administrar cualquier paquete adicional que encuentre en PyPI. Puede usar paquetes externos de otros desarrolladores como requisitos y concentrarse en el código que hace que su proyecto sea único.

Este tutorial tiene un curso de video relacionado creado por el equipo de Real Python. Míralo junto con el tutorial escrito para profundizar tu comprensión: Una guía para principiantes para Pip

Enlaces Externos

Entradas relacionadas

Deja una respuesta

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