Usando pip, ¿es posible averiguar qué versión de un paquete está instalada actualmente?
Lo sé pip install XYZ --upgradepero me pregunto si hay algo así pip info XYZ. Si no, ¿cuál sería la mejor manera de saber qué versión estoy usando actualmente?

showcomando en pip: github.com/pypa/pip/issues/33Respuestas:
A partir del pip 1.3 , hay un
pip showcomando.En versiones anteriores,
pip freezeygrepdebería hacer el trabajo bien.fuente
savenombre.pip show pippara obtener la información de la versión de pip, en lugar depip --versionlo que esperaba.pip freezetiene la ventaja de que muestra las versiones de pago VCS editables correctamente, mientraspip showque no.Acabo de enviar una solicitud de extracción en pip con la mejora que Hugo Tavares dijo:
(Specloud como ejemplo)
fuente
Pip 1.3 ahora también tiene un comando de lista :
fuente
pip listson genéricos y__version__no lo son. También he vistoversion()yget_version()para el importado.y con --actualizado como argumento adicional, obtendrá las versiones actual y más reciente de los paquetes que está utilizando:
Entonces, combinando con la respuesta de AdamKG:
Compruebe también las herramientas PIP: https://github.com/nvie/pip-tools
fuente
También puede instalar
yolky luego ejecutar, loyolk -lque también da una buena salida. Esto es lo que obtengo por mi pequeño virtualenv:fuente
Puede usar el comando grep para averiguarlo.
Ejemplo:
solo mostrará las versiones.
fuente
La forma más fácil es esta:
fuente
__version__en su código fuente. Muchos paquetes no.importy la salida depip freeze.También hay una herramienta llamada
pip-checkque le brinda una visión general rápida de todos los paquetes instalados y su estado de actualización:No lo he usado yo mismo; simplemente me topé con esto y esta pregunta SO en rápida sucesión, y como no se mencionó ...
fuente
En Windows, puede emitir comandos como:
Salida:
fuente
La función python devuelve solo la versión del paquete en un formato legible por máquina:
Antes de Python 3.8:
El equivalente de bash (aquí también invocado desde python) sería mucho más complejo (pero más robusto; consulte la precaución a continuación):
Uso de la muestra:
Tenga en cuenta que, en ambos casos, el
pkg_nameparámetro debe contener el nombre del paquete en el formato que devuelvepip freezey no como se usa duranteimport, por ejemplo,scikit-learnnosklearnoFlask-Cachingnoflask_caching.Tenga en cuenta que si bien invocar
pip freezeen la versión bash puede parecer ineficiente, solo este método demuestra ser lo suficientemente robusto para empaquetar las peculiaridades e inconsistencias de los nombres (por ejemplo, guiones bajos vs guiones, mayúsculas pequeñas y grandes, y abreviaturas comosklearnvsscikit-learn).Precaución: en entornos complejos, ambas variantes pueden devolver números de versión sorpresa, inconsistentes con lo que realmente puede obtener durante
import.Uno de estos problemas surge cuando hay otras versiones del paquete ocultas en una subcarpeta de usuario
site-packages. Como ilustración de los peligros del usoversion(), he aquí una situación que encontré:Otro problema es tener algunos paquetes instalados conda en el mismo entorno. Si comparten dependencias con sus paquetes instalados con pip, y las versiones de estas dependencias difieren, puede obtener una degradación de sus dependencias instaladas con pip.
Para ilustrar, la última versión de
numpydisponible en PyPI el 04-01-2020 fue 1.18.0, mientras que al mismo tiempo elconda-forgecanal de Anaconda solo tenía la versión 1.17.3numpycomo última. Por lo tanto, cuando instaló unbasemappaquete con conda (como segundo), su instalación previa en pipnumpyse degradaría por conda a 1.17.3, y la versión 1.18.0 dejaría de estar disponible para laimportfunción. En este casoversion()sería correcto ypip freeze/ oconda listincorrecto:fuente
importlib.metadata.version('NameOfProject')? docs.python.org/3/library/…from importlib_metadata import version; version('Flask-Caching')python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"?version()aún devuelve la primera (la más antigua) (2.2.3). Puede replicar este resultado instalando ambas versiones con el--userconmutador, pero conservando manualmente lalightgbm-2.2.3.dist-infocarpeta, para tener ambas juntas, como se enumeró anteriormente (pip normalmente lo eliminaría, hasta que no lo haga).pip show funciona en python 3.7:
fuente
Para hacer esto usando el código Python:
Utilizando
importlib.metadata.versionPython ≥3.8
Python ≤3.7
(usando
importlib_metadata.version)Utilizando
pkg_resources.DistributionAcreditado a los comentarios de sinoroc y mirekphd .
fuente
Para Windows puedes
abra cmd y escriba python, presione enter.
escriba la importación y presione enter.
escriba ._version__ y presione enter.
Como puede ver en la captura de pantalla aquí, estoy usando este método para verificar la versión del módulo en serie.
fuente
En cuestión, no se menciona qué usuario del sistema operativo está utilizando (Windows / Linux / Mac)
Como hay un par de respuestas que funcionarán perfectamente en Mac y Linux.
El siguiente comando se puede usar en caso de que el usuario intente encontrar la versión de un paquete de Python en Windows.
En PowerShell, use el siguiente comando:
pip list | findstr <PackageName>Ejemplo:-
pip list | findstr requestsSalida:
requests 2.18.4fuente