Acabo de instalar los módulos de Python: construct
y statlib
con setuptools
este aspecto:
# 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 verificar (mediante programación) sus versiones. ¿Hay un equivalente a python --version
que puedo ejecutar desde la línea de comandos?
Mi versión de Python es 2.7.3
.
pip list
Respuestas:
Sugiero usar pip en lugar de easy_install . Con pip, puede enumerar todos los paquetes instalados y sus versiones con
En la mayoría de los sistemas Linux, puede canalizar esto
grep
(ofindstr
en Windows) para encontrar la fila del paquete particular que le interesa:Para un módulo individual, puede probar el
__version__
atributo , sin embargo, hay módulos sin él:Por último, como los comandos en su pregunta tienen el prefijo
sudo
, parece que está instalando en el entorno global de Python. Recomendamos encarecidamente que eche un vistazo a los administradores de entornos virtuales de Python , por ejemplo virtualenvwrapperfuente
pip show lxml | grep Version
; esto se ejecutará mucho más rápido, ya que solo inspecciona un solo paquete.pip list | grep lxml
grep
en Windows? Desde pip congelar | grep lxml no funciona en windwos.pip list | findstr lxml
Puedes probar
fuente
inspect
) no tienen un__version__
atributo.serial.VERSION
. Quizás también hay otros módulos de uso común, que no siguen PEP 0396: python.org/dev/peps/pep-0396print(contruct.__version__)
si usa Python 3. *Utilice el
pkg_resources
módulo distribuido con lasetuptools
biblioteca. Tenga en cuenta que la cadena que pasa alget_distribution
método debe corresponder a la entrada PyPI.y si quieres ejecutarlo desde la línea de comando puedes hacer:
Tenga en cuenta que la cadena que pasa al
get_distribution
método debe ser el nombre del paquete registrado en PyPI, no el nombre del módulo que está intentando importar.Lamentablemente, estos no son siempre los mismos (p. Ej.
pip install memcached
, Pero síimport memcache
).fuente
__version__
.construct.version.full_version
pkg_resources.get_distrinbution
tampoco siempre funciona. Emite algunaDistributionNotFound
excepción con un mensaje de error como: "La distribución 'the_package_name' no se encontró y es requerida por la aplicación"get_distribution
método¡Creo que esto puede ayudar pero primero instale el
show
paquete para ejecutarlo ypip show
luego use show para encontrar la versión!fuente
pip: error: No command by the name pip show (maybe you meant "pip install show")
pip show PACKAGE | awk '/^Version: / {sub("^Version: ", ""); print}'
. Probablemente podría salirse con la suya con un script AWK más simple, pero lo mencionado anteriormente será más seguro para cualquier caso límite.pip show
se implementó en pip 1.2.1.post1 . Estás utilizando una versión de pip terriblemente anticuada, así que no es de extrañar que estés teniendo problemas. Actualmente estoy ejecutando pip 7.1.2 . Si algo le impide actualizar, siempre puede instalarlo localmente o en un virtualenv.La mejor manera de hacerlo es:
Para los detalles del paquete específico
pip show <package_name>
Para más detalles:
>>> pip help
pip
debe actualizarse para hacer esto.En Windows, el comando recomendado es:
fuente
pip show scikit-learn
lugar depip show sklearn
. sklearn es una forma corta utilizada durante la importación, no se reconoce directamentepip
yascikit-learn
que el paquete completo no se aprendesklearn
En python3 con corchetes alrededor de impresión
fuente
__version__
atributo.print
, tal como se(2)+(3)
evalúa5
. Cuando tiene una coma dentro de los paréntesis, las cosas pueden ponerse marginalmente más interesantes, aunqueprint
, de alguna manera , funciona.module.__version__
es bueno probarlo primero, pero no siempre funciona.Si no desea pagar, y está usando pip 8 o 9, aún puede usar
pip.get_installed_distributions()
para obtener versiones desde Python:actualización: la solución aquí funciona en los pip 8 y 9, pero en el pip 10 la función se ha movido de
pip.get_installed_distributions
apip._internal.utils.misc.get_installed_distributions
para indicar explícitamente que no es para uso externo. No es una buena idea confiar en él si está utilizando pip 10+.fuente
pip
, esto siempre debería funcionar.Las respuestas anteriores no resolvieron mi problema, pero este código sí:
fuente
__version__
si no está definido. Si no hay__version__
, no recibirá ningún resultado para el paquete que desea.__version__
atributo, que es el estándar ( python.org/dev/peps/pep-0396/#specification ), es imposible saber dónde y cómo se incluye la versión sin una investigación manual.Puedes usar la
importlib_metadata
biblioteca para esto.Si estás en Python
<3.8
, primero instálalo con:Desde python
3.8
está incluido en la biblioteca estándar.Luego, para verificar la versión de un paquete (en este ejemplo
lxml
) ejecute:Tenga en cuenta que esto solo funciona para paquetes instalados desde PyPI. Además, debe pasar un nombre de paquete como argumento al
version
método, en lugar de un nombre de módulo que proporciona este paquete (aunque generalmente son los mismos).fuente
Úselo
dir()
para averiguar si el módulo tiene algún__version__
atributo.fuente
Si los métodos anteriores no funcionan, vale la pena intentar lo siguiente en python:
Ver Obtener la versión Python Tornado?
Tenga en cuenta que también
.version
funcionó para mí en algunos otros además del tornado.fuente
primero agregue python, pip a sus variables de entorno. para que pueda ejecutar sus comandos desde el símbolo del sistema. entonces simplemente da el comando python . luego importe el paquete
->
import scrapy
luego imprima el nombre de la versión
->
print(scrapy.__version__)
Esto definitivamente funcionará
fuente
__version__
atributo.pip freeze
sin embargo, <paquete> .__ versión_ funcionó. Gracias por publicar.Suponiendo que estamos usando Jupyter Notebook (si usa Terminal, suelte los signos de exclamación):
1) si el paquete (por ejemplo, xgboost) se instaló con pip :
2) si el paquete (por ejemplo, caffe) se instaló con conda :
fuente
Algunos módulos no tienen
__version__
atributo, por lo que la forma más fácil es verificar en el terminal:pip list
fuente
En la versión Python 3.8 hay un nuevo
metadata
módulo en elimportlib
paquete, que también puede hacer eso.Aquí hay un ejemplo de documentos:
fuente
Sugiero abrir un
python
shell en la terminal (en la versión de Python que le interesa), importar la biblioteca y obtener su__version__
atributo.Nota 1: Debemos considerar la versión de Python . Si hemos instalado diferentes versiones de python, tenemos que abrir el terminal en la versión de python que nos interesa. Por ejemplo, abrir el terminal con
python3.8
can (seguramente lo hará) dará una versión diferente de una biblioteca que abrir conpython3.5
opython2.7
.Nota 2: Nos evitamos el uso de la
print
función , debido a que su comportamiento depende de python2 o python3. No lo necesitamos, el terminal mostrará el valor de la expresión.fuente
¡Esto también funciona en Jupyter Notebook en Windows! Siempre que Jupyter se inicie desde una línea de comandos compatible con bash como Git Bash (MingW64), las soluciones dadas en muchas de las respuestas se pueden usar en Jupyter Notebook en sistemas Windows con un pequeño ajuste.
Estoy ejecutando Windows 10 Pro con Python instalado a través de Anaconda, y el siguiente código funciona cuando ejecuto Jupyter a través de Git Bash (pero no cuando inicio desde el indicador de Anaconda).
El ajuste: agregue un signo de exclamación (
!
) delantepip
para hacerlo!pip
.fuente
Programa de pitón rápida para enumerar todos los packges (se puede copiar a requirements.txt )
La salida se vería así:
fuente
(ver también https://stackoverflow.com/a/56912280/7262247 )
Me pareció poco confiable usar las diversas herramientas disponibles (incluida la mejor
pkg_resources
mencionada por la respuesta de Jakub Kukul ), ya que la mayoría de ellas no cubren todos los casos . Por ejemploComo necesitábamos una forma confiable de obtener la versión de cualquier paquete, módulo o submódulo, terminé escribiendo getversion . Es bastante simple de usar:
Consulte la documentación para más detalles.
fuente
Para obtener una lista de módulos no estándar (pip) importados en el módulo actual:
Resultado:
Nota:
Este código se creó a partir de soluciones tanto en esta página como en ¿Cómo enumerar los módulos importados?
fuente
En resumen:
(Proporcionará todas las bibliotecas junto con los detalles de la versión).
Y:
(Da detalles completos de la biblioteca).
fuente
Sobre la base de la respuesta de Jakub Kukul, encontré una forma más confiable de resolver este problema.
El principal problema de ese enfoque es que requiere que los paquetes se instalen "convencionalmente" (y eso no incluye el uso
pip install --user
), o que estén en la RUTA del sistema en la inicialización de Python.Para evitar eso, puedes usarlo
pkg_resources.find_distributions(path_to_search)
. Básicamente, esto busca distribuciones que serían importables sipath_to_search
estuviera en la RUTA del sistema.Podemos iterar a través de este generador así:
Esto devolverá un diccionario que tenga módulos como claves y su versión como valor. Este enfoque puede extenderse a mucho más que el número de versión.
Gracias a Jakub Kukul por señalar la dirección correcta.
fuente
Escribir esta respuesta para usuarios de Windows. Como se sugiere en todas las otras respuestas, puede usar las declaraciones como:
Pero, hay algunos módulos que no imprimen su versión incluso después de usar el método anterior. Entonces, lo que simplemente puedes hacer es:
fuente
Puedes probar esto:
Esto generará todos los paquetes con sus versiones. Salida
fuente
primero puede instalar un paquete como este y luego verificar su versión
debería darte la versión del paquete
fuente