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:
- Configurar
pip
en su entorno de trabajo - Corregir errores comunes relacionados con el trabajo con
pip
- Instalar y desinstalar paquetes con
pip
- 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.
Contenido
Empezando conpip
Entonces, ¿qué hace exactamentepip
¿Sí?pip
Es 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 incluidopip
desde las versiones 3.4 y 2.7.9, para Python 3 y Python 2, respectivamente. Muchos proyectos de Python usanpip
Esto 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,pip
se ha convertido en el gestor de paquetes estándar.
Hallazgopip
en su sistema
El instalador de Python 3 le da la opción de instalarpip
al instalar Python en su sistema. De hecho, la opción de instalarpip
con Python está marcada de forma predeterminada, por lo quepip
debería estar listo para su uso después de instalar Python.
Nota: En algunos sistemas Linux (Unix) como Ubuntu,pip
viene 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 quepip
está disponible buscando elpip3
ejecutable 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
Loswhere
El 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 buscarpip
Sin los tres (3
) al final.
$ which pip3
Loswhich
El comando en sistemas Linux y macOS le muestra dóndepip3
Se encuentra el archivo binario.
En sistemas Windows y Unix,pip3
Se puede encontrar en más de un lugar. Esto puede suceder cuando tiene varias versiones de Python instaladas. Si no encuentraspip
en cualquier ubicación de su sistema, entonces puede considerar reinstalar pip.
En lugar de ejecutar su sistemapip
directamente, también puede ejecutarlo como un módulo de Python. En la siguiente sección, aprenderás cómo.
Correrpip
como un módulo
Cuando ejecutas tu sistemapip
directamente, el comando en sí no revela qué versión de Pythonpip
Pertenece a. Desafortunadamente, esto significa que podrías usarpip
instalar un paquete en los paquetes del sitio de una versión antigua de Python sin darse cuenta. Para evitar que esto suceda, puede ejecutarpip
como un módulo Python:
$ python3 -m pip
Observa que utilizaspython3 -m
para correrpip
. Los-m
switch le dice a Python que ejecute un módulo como ejecutable delpython3
Intérprete. De esta manera, puede asegurarse de que su versión predeterminada de Python 3 ejecute elpip
comando. 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 ejecutarpip
dentro de un entorno virtual.
Usandopip
En 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.
Usandopip
dentro de un entorno virtual tiene tres ventajas principales. Usted puede:
- Asegúrese de que está utilizando la versión correcta de Python para el proyecto en cuestión.
- Confíe en que se está refiriendo a la correcta
pip
instancia cuando se ejecutapip
opip3
- Utilice una versión de paquete específica para su proyecto sin afectar a otros proyectos
Python 3 tiene la función integradavenv
Mó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 quepip
mó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 llamadovenv
mediante el uso de Python incorporadovenv
módulo. Luego lo activan con elsource
comando. Los paréntesis (()
) rodeando suvenv
nombre indica que ha activado correctamente el entorno virtual.
Por último, verifique la versión de lapip3
pip
ejecutables dentro de su entorno virtual activado. Ambos apuntan a la mismapip
módulo, por lo que una vez que su entorno virtual está activado, puedepip
opip3
.
Reinstalaciónpip
Cuando se producen errores
Cuando se ejecuta elpip
comando, puede obtener un error en algunos casos. Su mensaje de error específico dependerá de su 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 elpip
El comando no funciona, puedes probar usando elpip3
con los tres (3
) al final.
Obtener errores como los que se muestran arriba puede ser frustrante porquepip
es vital para instalar y administrar paquetes externos. Algunos problemas comunes conpip
está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 encontrarpip
en los lugares listados en suPATH
variable. En Windows,PATH
forma parte de las variables del sistema. En macOS y Linux,PATH
forma parte de las variables de entorno. Puedes consultar el contenido de tuPATH
Variable 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 elpip
El ejecutable debe estar presente enPATH
después de instalar Python o crear un entorno virtual. Sin embargo, faltapip
es un tema común. Dos métodos compatibles pueden ayudarle a instalarpip
De nuevo y añádelo a tuPATH
:
- Los
ensurepip
módulo - Los
get-pip.py
script
Losensurepip
Este módulo ha sido parte de la biblioteca estándar desde Python 3.4. Se agregó para proporcionar una forma sencilla de reinstalarpip
si, por ejemplo, te lo saltaste al instalar Python o lo desinstalastepip
En algún momento. Seleccione su sistema operativo a continuación y ejecuteensurepip
en consecuencia:
- Ventanas
- Linux + macOS
C:> python -m ensurepip --upgrade
$ python3 -m ensurepip --upgrade
Sipip
aún no está instalado, entonces este comando lo instala en su entorno Python actual. Si se encuentra en un entorno virtual activo, el comando instalapip
en ese ambiente. De lo contrario, se instalapip
globalmente en su sistema. Los--upgrade
La opción garantiza que elpip
versión es la misma que la declarada enensurepip
.
Nota: Losensurepip
El módulo no accede a Internet. La última versión depip
queensurepip
puede instalar es la versión que se incluye en la instalación de Python de su entorno. Por ejemplo, ejecutarensurepip
Instalación de Python 3.10.0pip
21.2.3. Si quieres una nuevapip
versión, entonces tendrías que correr primeroensurepip
. Después, puedes actualizarpip
manualmente a su última versión.
Otra forma de arreglar tupip
La instalación es utilizar elget-pip.py
guión. Losget-pip.py
archivo contiene una copia completa depip
como un archivo ZIP codificado. Usted puede descargarget-pip.py
directamente 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
, wheel
en su entorno Python actual. Si solo quieres instalarpip
, entonces usted puede agregar el--no-setuptools
--no-wheel
opciones 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 quepip
está 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
. Losrequests
biblioteca le ayuda a interactuar con los servicios web mediante la abstracción de las complejidades de las solicitudes HTTP. Usted puede aprender todo acerca derequests
en su sitio de documentación oficial.
Cuando se quiere utilizar elrequests
paquete 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. Cualquierapip
Los comandos que realice a partir de ahora ocurrirán dentro de su entorno virtual.
Para instalar paquetes,pip
proporciona uninstall
comando. Puede ejecutarlo para instalar elrequests
paquete:
- Ventanas
- Linux + macOS
(venv) C:> python -m pip install requests
(venv) $ python3 -m pip install requests
En este ejemplo, ejecutaspip
Con elinstall
comando seguido del nombre del paquete que desea instalar. Lospip
comando busca el paquete en PyPI, resuelve sus dependencias e instala todo en su entorno Python actual para asegurarse de querequests
funcionará.
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 paquetesrptree
codetiming
en elpip install
comando, instala ambos paquetes a la vez. Puede agregar tantos paquetes como desee a lapip install
comando. En casos como este, arequirements.txt
archivo puede ser útil. Más adelante en este tutorial, aprenderás a usar unrequirements.txt
archivo 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.9
o 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 ellist
comando 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 list
comando 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.z
formato de marcador de posición. Cuando se ejecuta elpip list
en tu entorno,pip
muestra 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 lashow
comando 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. LosRequires
paquetes de listas de líneas, tales comocertifi
,idna
,charset-normalizer
, urllib3
. Estos fueron instalados porquerequests
depende de ellos para que funcionen correctamente.
Ahora que has instaladorequests
y sus dependencias, puede importarlo como cualquier otro paquete normal en su código Python. Inicie el intérprete interactivo de Python e importe elrequests
paquete:
>>> import requests
>>> requests.__version__
"x.y.z"
Después de iniciar el intérprete interactivo de Python, ha importado elrequests
módulo. Llamandorequests.__version__
, verificaste que estabas usando elrequests
módulo dentro de su entorno virtual.
Uso de un índice de paquetes personalizados
Por defecto,pip
utiliza PyPI para buscar paquetes. Peropip
También le da la opción de definir un índice de paquete personalizado.
Usandopip
con 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.pip
usuarios 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-url
opción. En lugar de escribir--index-url
, también puede utilizar el-i
taquigrafía.
Por ejemplo, para instalar elrptree
herramienta 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-i
opción, usted dicepip
para ver un índice de paquete diferente en lugar de PyPI, el predeterminado. Aquí, usted está instalandorptree
de 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-url
La opción en elpip
archivo 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 list
comando, 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
,pip
le muestra dónde busca los diferentes niveles de configuración.
Si quieres añadir unpip.conf
archivo, a continuación, puede elegir una de las ubicaciones quepip config list -vv
listada. Apip.conf
archivo con un índice de paquete personalizado se ve así:
# pip.conf
[global]
index-url = https://test.pypi.org/simple/
Cuando usted tiene unpip.conf
archivo como este,pip
Utilizará el definidoindex-url
para buscar paquetes. Con esta configuración, no es necesario utilizar el--index-url
opción en supip install
comando 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.pip
Tambié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+https
En 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 elrptree
módulo. Llamandorptree.__version__
, verificas que estás usando elrptree
módulo que se basa en su entorno virtual.
Nota: Si está utilizando un sistema de control de versiones (VCS) que no sea Git,pip
Te tiene cubierto. Para aprender a usarpip
con Mercurial, Subversion o Bazaar, consulte el capítulo de Soporte de VCS delpip
documentació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 apuntaspip
incluso 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 usarpip
para 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 elrptree
paquete como un módulo editable. Aquí hay un desglose paso a paso de las acciones que acaba de realizar:
- Línea 1 clonó el repositorio Git del
rptree
paquete. - La línea 2 cambió el directorio de trabajo a
rptree/
. - Las líneas 3 y 4 crearon y activaron un entorno virtual.
- La línea 5 instaló el contenido del directorio actual como un paquete editable.
Los-e
La opción es una abreviatura para el--editable
opción. Cuando se utiliza el-e
opción conpip install
, tu dicespip
que desea instalar el paquete en modo editable. En lugar de usar un nombre de paquete, usa un punto (.
) hasta el puntopip
hacia el directorio actual.
Si no hubieras utilizado el-e
bandera,pip
habrí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 install
Con el paso del tiempo.-e
La bandera es solo una de las muchas opciones quepip install
ofertas. Usted puede comprobar hacia fuerapip install
ejemplos en elpip
documentación. Allí aprenderá cómo instalar versiones específicas de un paquete o punto.pip
a un índice diferente que no es PyPI.
En la siguiente sección, aprenderá cómo los archivos de requisitos pueden ayudar con supip
flujos de trabajo.
Uso de archivos de requisitos
Lospip install
El 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.txt
o similar. El formato de archivo de requisitos le permite especificar con precisión qué paquetes y versiones deben instalarse.
Correrpip help
muestra que hay afreeze
comando 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.txt
en 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.z
que se muestra arriba es un formato de marcador de posición para las versiones del paquete. Turequirements.txt
El archivo contendrá números de versión reales.
Losfreeze
El 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-r
switch 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 dicepip
para instalar los paquetes listados enrequirements.txt
en su entorno actual. Las versiones del paquete coincidirán con las restricciones de la versión que elrequirements.txt
archivo contiene. Puedes correrpip list
para 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.txt
en 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.txt
en 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>=
decirpip
para instalar una versión exacta o superior que se haya publicado. Cuando se establece un nuevo entorno mediante el uso de larequirements.txt
archivo,pip
busca la última versión que satisfaga el requisito y la instala.
A continuación, puede actualizar los paquetes en su archivo de requisitos ejecutando elinstall
Con el paso del tiempo.--upgrade
El interruptor o el-U
taquigrafí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
, derequests
se publica, pero introduce un cambio incompatible que rompe su aplicación. Puede modificar el archivo de requisitos para evitar3.0
o 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 elrequests
asegura que cualquier versión mayor o igual que3.0
No se instala. Lospip
La 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 utilicepip
Instalar ambos,requirements.txt
requirements_dev.txt
. Afortunadamente,pip
le permite especificar parámetros adicionales dentro de un archivo de requisitos, por lo que puede modificarrequirements_dev.txt
para instalar también los requisitos de la producciónrequirements.txt
archivo:
# requirements_dev.txt
-r requirements.txt
pytest>=x.y.z
Tenga en cuenta que usted utiliza el mismo-r
cambiar para instalar la producciónrequirements.txt
archivo. 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.txt
contiene el-r requirements.txt
línea, instalarás no solopytest
sino 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ápytest
instalado.
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í:
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.txt archivo. |
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.txt archivo. |
Con un flujo de trabajo como este, elrequirements_lock.txt
archivo 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.txt
En 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
, tienespip
Instalar 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 elshow
comando enpip
Es muy útil.
Antes de desinstalar un paquete, asegúrese de ejecutar elshow
comando 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,Requires
Required-by
. Losshow
El comando te dice querequests
requierecertifi
,idna
,charset-normalizer
, urllib3
. Es probable que desee desinstalarlos también. Observe querequests
No es requerido por ningún otro paquete. Por lo tanto, es seguro desinstalarlo.
Usted debe ejecutar elshow
Orden contra todos losrequests
dependencias 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 eluninstall
comando:
- Ventanas
- Linux + macOS
(venv) C:> python -m pip uninstall certifi
(venv) $ python3 -m pip uninstall certifi
Losuninstall
comando 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-y
para 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-y
switch, 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 uninstall
comando. Si no agregaste ningún interruptor adicional, entonces tendrías que confirmar la desinstalación de cada paquete. Al pasar el-y
cambiar, 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-y
interruptor:
- 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 uninstall
puede ser realmente útil cuando necesite desinstalar un paquete de su instalación de Python del sistema. Usandopip uninstall
es 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 apip
que 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:
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ólopip
viene 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 elpip
administrador 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 ejecutar
pip
en su entorno de trabajo - Corregir errores comunes relacionados con el trabajo con
pip
- Instalar y desinstalar paquetes con
pip
- 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.pip
Esto 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
- https://www.python.org/downloads/
- https://snarky.ca/why-you-should-use-python-m-pip/
- https://pip.pypa.io/en/stable/topics/configuration/
- https://www.nuget.org/
- https://pip.pypa.io/en/stable/topics/vcs-support/
- https://test.pypi.org/
- https://docs.python.org/3/py-modindex.html
- https://www.ruby-lang.org/en/
- https://pip.pypa.io/en/stable/installation/#supported-methods
- https://github.com/pypa/get-pip
- https://charset-normalizer.readthedocs.io/en/latest/
- https://repo.continuum.io/
- https://pip.pypa.io/en/stable/cli/pip_install/#examples
- https://www.python.org/dev/peps/pep-0503/
- https://pypi.org/project/rptree/
- https://www.ianbicking.org/blog/2008/10/pyinstall-is-dead-long-live-pip.html
- https://www.anaconda.com/
- https://docs.python.org/3/library/ensurepip.html#module-ensurepip
- https://github.com/pypa/pipenv
- https://docs.python.org/3/library/venv.html
- https://www.python.org/dev/peps/pep-0440/#version-specifiers
- https://urllib3.readthedocs.io/en/stable/
- https://pypi.org/
- https://rubygems.org/
- https://www.python.org/dev/peps/pep-0206/#id3
- https://pypi.org/simple/
- https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
- https://python-poetry.org/
- https://en.wikipedia.org/wiki/API
- http://docs.python-requests.org/en/master/
- https://pypi.org/project/certifi/
- https://www.python.org/dev/peps/pep-0453/
- https://dotnet.microsoft.com/languages
- https://test.pypi.org/simple/
- https://conda.io/en/latest/
- https://www.npmjs.com/
- https://bootstrap.pypa.io/get-pip.py
- https://github.com/realpython/rptree
- https://pip.pypa.io/en/stable/
- https://www.python.org/
- https://pip.pypa.io/en/stable/reference/requirements-file-format/
- https://pypi.org/project/idna/
- https://developer.mozilla.org/en-US/docs/Web/JavaScript
- https://setuptools.pypa.io/en/latest/