update specific pip3 installed check python

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'', ...]