specific - ¿Cómo comprobar la versión de los módulos de python?
pip3 install package version (15)
Algunos módulos no tienen el atributo __version__
, por lo que la forma más sencilla es verificar en el terminal: pip list
Acabo de instalar los módulos de Python: construct
y statlib
con setuptools
como este:
# Install setuptools to be able to download the following
sudo apt-get install python-setuptools
# Install statlib for lightweight statistical tools
sudo easy_install statlib
# Install construct for packing/unpacking binary data
sudo easy_install construct
Quiero poder (programáticamente) verificar sus versiones. ¿Existe un equivalente a python --version
que pueda ejecutarse desde la línea de comandos?
Mi versión de python es 2.7.3
.
Creo que esto puede ayudar, pero primero instale show
package para ejecutar pip show
luego use show para encontrar la versión.
sudo pip install show
# in order to get package version execute the below command
sudo pip show YOUR_PACKAGE_NAME | grep Version
Cuando instala Python, también obtiene el administrador de paquetes de Python, pip. Puedes usar pip para obtener las versiones de los módulos de Python. Si desea enumerar todos los módulos de Python instalados con sus números de versión, use el siguiente comando:
$ pip freeze
Obtendrá la salida:
asn1crypto==0.22.0
astroid==1.5.2
attrs==16.3.0
Automat==0.5.0
backports.functools-lru-cache==1.3
cffi==1.10.0
...
Para encontrar individualmente el número de versión, puede grep en esta salida en máquinas * NIX. Por ejemplo:
$ pip freeze | grep PyMySQL
PyMySQL == 0.7.11 En Windows, puede usar findstr en lugar de grep. Por ejemplo:
PS C:/> pip freeze | findstr PyMySql
PyMySQL == 0.7.11
Si desea conocer la versión de un módulo dentro de un script de Python, puede usar el atributo __version__
del módulo para obtenerlo. Tenga en cuenta que no todos los módulos vienen con un atributo __version__
. Por ejemplo,
>>> import pylint
>>> pylint.__version__
''1.7.1''
En python3 con soportes alrededor de la impresión.
>>> import celery
>>> print(celery.__version__)
3.1.14
La mejor manera de hacerlo es:
Para los detalles del paquete específico
pip show <package_name>
Detalla el Nombre del paquete, Versión, Autor, Ubicación, etc.
$ pip show numpy
Name: numpy
Version: 1.13.3
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: [email protected]
License: BSD
Location: c:/users/prowinjvm/appdata/local/programs/python/python36/lib/site-packages
Requires:
Para más detalles: >>> pip help
Las respuestas anteriores no resolvieron mi problema, pero este código lo hizo:
import sys
for name, module in sorted(sys.modules.items()):
if hasattr(module, ''__version__''):
print name, module.__version__
Para obtener una lista de módulos no estándar (pip) importados en el módulo actual:
[{pkg.key : pkg.version} for pkg in pip.get_installed_distributions()
if pkg.key in set(sys.modules) & set(globals())]
Resultado:
>>> import sys, pip, nltk, bs4
>>> [{pkg.key : pkg.version} for pkg in pip.get_installed_distributions() if pkg.key in set(sys.modules) & set(globals())]
[{''pip'': ''9.0.1''}, {''nltk'': ''3.2.1''}, {''bs4'': ''0.0.1''}]
Nota:
Este código se creó a partir de soluciones tanto en esta página como en ¿Cómo listar los módulos importados?
Primero agrega python, pip a tus variables de entorno. para que pueda ejecutar sus comandos desde el símbolo del sistema. entonces simplemente dar comando de python . luego importa el paquete
-> import scrapy
luego imprima el nombre de la versión
-> print(scrapy.__version__)
Esto definitivamente funcionará
Puedes probar
>>> import statlib
>>> print statlib.__version__
>>> import construct
>>> print contruct.__version__
Si los métodos anteriores no funcionan, vale la pena probar lo siguiente en python:
import modulename
modulename.version
modulename.version_info
Ver Obtener la versión de Python Tornado?
Tenga en cuenta que la .version
funcionó para mí en otros pocos además del tornado.
Sugiero usar pip en lugar de easy_install . Con pip, puede enumerar todos los paquetes instalados y sus versiones con
pip freeze
En la mayoría de los sistemas Linux, puede canalizar esto a grep
para encontrar la fila del paquete en particular que le interesa:
$ pip freeze | grep lxml
lxml==2.3
Para un módulo individual, puede probar el atributo __version__
, sin embargo, hay módulos sin él:
$ python -c "import requests; print(requests.__version__)"
2.14.2
$ python -c "import lxml; print(lxml.__version__)"
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: ''module'' object has no attribute ''__version__''
Finalmente, como los comandos en su pregunta tienen el prefijo sudo
, parece que está instalando en el entorno de Python global. Se recomienda encarecidamente echar un vistazo a los administradores de entornos virtuales de Python, por ejemplo, virtualenvwrapper
Suponiendo que estemos usando Jupyter Notebook (si usa Terminal, suelte los signos de exclamación):
1) si el paquete (por ejemplo, xgboost) se instaló con pip :
!pip show xgboost
!pip freeze | grep xgboost
!pip list | grep xgboost
2) si el paquete (ej. Caffe) fue instalado con conda :
!conda list caffe
Tuve el mismo problema, intenté desinstalar ambos módulos: serial
y pyserial
. Entonces reinstalé pyserial
SOLAMENTE y funcionó perfectamente.
Use el módulo pkg_resources
distribuido con la librería setuptools
. Tenga en cuenta que la cadena que pasa al método get_distribution
debe corresponder a la entrada PyPI.
>>> import pkg_resources
>>> pkg_resources.get_distribution("construct").version
''2.5.2''
y si quieres ejecutarlo desde la línea de comandos puedes hacerlo:
python -c "import pkg_resources; print pkg_resources.get_distribution(''construct'').version"
(Descargo de responsabilidad: Esto es más o menos un repost de esta answer , pero para mí es más relevante que cualquier otra respuesta a esta pregunta).
module.__version__
es un buen primer intento, pero no siempre funciona.
Si no quiere pagar y está usando pip 8 o 9, todavía puede usar pip.get_installed_distributions()
para obtener versiones desde Python:
actualización: la solución aquí funciona en pip 8 y 9, pero en pip 10 la función se ha movido de pip.get_installed_distributions
a pip._internal.utils.misc.get_installed_distributions
para indicar explícitamente que no es para uso externo. No es una buena idea confiar en ella si estás usando pip 10+.
import pip
pip.get_installed_distributions() # -> [distribute 0.6.16 (...), ...]
[
pkg.key + '': '' + pkg.version
for pkg in pip.get_installed_distributions()
if pkg.key in [''setuptools'', ''statlib'', ''construct'']
] # -> nicely filtered list of [''setuptools: 3.3'', ...]