Usando pip, ¿es posible averiguar qué versión de un paquete está instalada actualmente?
Lo sé pip install XYZ --upgrade
pero 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?
show
comando en pip: github.com/pypa/pip/issues/33Respuestas:
A partir del pip 1.3 , hay un
pip show
comando.En versiones anteriores,
pip freeze
ygrep
debería hacer el trabajo bien.fuente
save
nombre.pip show pip
para obtener la información de la versión de pip, en lugar depip --version
lo que esperaba.pip freeze
tiene la ventaja de que muestra las versiones de pago VCS editables correctamente, mientraspip show
que 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 list
son 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
yolk
y luego ejecutar, loyolk -l
que 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.import
y la salida depip freeze
.También hay una herramienta llamada
pip-check
que 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_name
parámetro debe contener el nombre del paquete en el formato que devuelvepip freeze
y no como se usa duranteimport
, por ejemplo,scikit-learn
nosklearn
oFlask-Caching
noflask_caching
.Tenga en cuenta que si bien invocar
pip freeze
en 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 comosklearn
vsscikit-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
numpy
disponible en PyPI el 04-01-2020 fue 1.18.0, mientras que al mismo tiempo elconda-forge
canal de Anaconda solo tenía la versión 1.17.3numpy
como última. Por lo tanto, cuando instaló unbasemap
paquete con conda (como segundo), su instalación previa en pipnumpy
se degradaría por conda a 1.17.3, y la versión 1.18.0 dejaría de estar disponible para laimport
función. En este casoversion()
sería correcto ypip freeze
/ oconda list
incorrecto: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--user
conmutador, pero conservando manualmente lalightgbm-2.2.3.dist-info
carpeta, 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.version
Python ≥3.8
Python ≤3.7
(usando
importlib_metadata.version
)Utilizando
pkg_resources.Distribution
Acreditado 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 requests
Salida:
requests 2.18.4
fuente