simplemente puede hacer >>> ayuda () y luego >>> módulos
Julius Naeumann
1
¿Hay una alternativa? help () me cuelga.
Paulo Carvalho
2
Muchas de estas respuestas suponen que tiene acceso a una línea de comando. Si está utilizando AWS Lambda, debe hacerlo todo desde Python. Ver stackoverflow.com/a/54939905/117471
Bruno Bronosky
Respuestas:
610
Solución
¡No utilizar con pip> 10.0!
Mis 50 centavos para obtener una pip freezelista similar de un script de Python:
import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s"%(i.key, i.version)for i in installed_packages])print(installed_packages_list)
Como un revestimiento (demasiado largo):
sorted(["%s==%s"%(i.key, i.version)for i in pip.get_installed_distributions()])
Esta solución se aplica al ámbito de aplicación del sistema o a un ámbito entorno virtual, y los paquetes de cubiertas instalado por setuptools, pipy ( God Forbid ) easy_install.
Mi caso de uso
Agregué el resultado de esta llamada a mi servidor de matraz, así que cuando lo llamo con http://example.com/exampleServer/environment obtengo la lista de paquetes instalados en virtualenv del servidor. Hace que la depuración sea mucho más fácil.
Advertencias
He notado un comportamiento extraño de esta técnica: cuando se invoca el intérprete de Python en el mismo directorio que un setup.pyarchivo, no enumera el paquete instalado por setup.py.
Pasos para reproducir:
Crea un entorno virtual
$ cd /tmp
$ virtualenv test_env
New python executable in test_env/bin/python
Installing setuptools, pip...done.
$ source test_env/bin/activate
(test_env) $
(test_env) $ ls /tmp/behave/setup.py
/tmp/behave/setup.py
Instale el paquete python desde el repositorio git
(test_env) $ cd /tmp/behave && pip install .
running install
...Installed/private/tmp/test_env/lib/python2.7/site-packages/enum34-1.0-py2.7.eggFinished processing dependencies for behave==1.2.5a1
Si ejecutamos la solución mencionada anteriormente desde /tmp
>>>import pip
>>> sorted(["%s==%s"%(i.key, i.version)for i in pip.get_installed_distributions()])['behave==1.2.5a1','enum34==1.0','parse-type==0.3.4','parse==1.6.4','six==1.6.1']>>>import os
>>> os.getcwd()'/private/tmp'
Si ejecutamos la solución mencionada anteriormente desde /tmp/behave
>>>import pip
>>> sorted(["%s==%s"%(i.key, i.version)for i in pip.get_installed_distributions()])['enum34==1.0','parse-type==0.3.4','parse==1.6.4','six==1.6.1']>>>import os
>>> os.getcwd()'/private/tmp/behave'
behave==1.2.5a1falta en el segundo ejemplo, porque el directorio de trabajo contiene behaveel setup.pyarchivo 's .
No pude encontrar ninguna referencia a este problema en la documentación. Quizás deba abrir un error para ello.
Gracias por esta respuesta! Creo que responde mejor la pregunta porque pregunto módulos Python instalados "localmente". La congelación de pepitas tampoco es siempre el camino a seguir. Esto funciona mejor, creo.
Léo Léopold Hertz 준영
3
@Masi acaba de agregar una explicación detallada de la advertencia de esta solución. De hecho es extraño.
Adam Matan
21
Una alternativa:import pkg_resources; installed_packages = [(d.project_name, d.version) for d in pkg_resources.working_set]
Ebolyen
14
A partir del pip 10, esta respuesta ya no funcionará. El comentario de @ebolyen muestra comandos alternativos que funcionan. Llegué a la misma conclusión y publiqué el código revisado completo a continuación.
Big_Al_Tx
55
En versiones recientes de pip, esto no funcionará, produciendo un mensaje de error que dice AttributeError: module 'pip' has no attribute 'get_installed_distributions'.
Digo "sorprendentemente" porque la herramienta de instalación de paquetes es el lugar exacto en el que uno esperaría encontrar esta funcionalidad, aunque no bajo el nombre 'congelar', pero el empaque de Python es tan extraño, que estoy asombrado de que esta herramienta tenga sentido. Pip 0.8.2, Python 2.7.
Supongo que la idea detrás del nombre es que obtienes una instantánea "congelada" de lo que está instalado en este momento, que luego puedes volver a alimentar en pip para obtener exactamente los mismos módulos instalados en un entorno diferente.
Ryan C. Thompson
Arash, ¡también puedes instalar pip en Windows! Primero instale setuptools y luego use easy_install para instalar pip :)
gawbul
Esto es excelente, pero parece perder algunas de las bibliotecas que instalé. Por ejemplo, no enumera PyQt.
funciona. Qué desastre es Python. ¿Por qué no pueden actuar juntos y encontrar soluciones similares a las que existen en Rails? (Gemfile, bundler, rvm)
Dimitris
106
Desde pip versión 1.3, tienes acceso a:
pip list
Que parece ser azúcar sintáctico para "congelación de pepita". Enumerará todos los módulos específicos de su instalación o virtualenv, junto con sus números de versión. Desafortunadamente, no muestra el número de versión actual de ningún módulo, ni lava los platos ni lustra tus zapatos.
pkgutil.iter_modules()funciona, la solución pip anterior no enumera todos los paquetes, solo los instalados a través de pip.
metaperture
2
¡Increíble! Creo que han mejorado la documentación, ya que se hizo la pregunta. pydoc modules spam busca spam en documentos de módulos. El último punto parece darle la información suficiente para usar el módulo. @metaperture ¿Puede, por favor, dar un ejemplo de cómo enumera todos los módulos locales instalados (no la lista masiva de stlib por ayuda ('módulos')) por pkgutil.iter_modules () .
Léo Léopold Hertz 준영
2
@ LéoLéopoldHertz 준영 Prueba este fragmento: python -c 'import pkgutil;print [x[1] for x in list(pkgutil.iter_modules())]'. Debería volcar todos los nombres de los módulos como una gran lista de Python. El x[1]bit se utiliza para extraer el nombre del módulo de las tuplas generadas por pkgutil.iter_modules().
Philip Conrad
76
Solo uso esto para ver los módulos utilizados actualmente:
import sys as s
s.modules.keys()
que muestra todos los módulos que se ejecutan en su python.
Para todos los módulos integrados, use:
s.modules
Que es un dict que contiene todos los módulos y objetos de importación.
# Después de importar sys "import sys as s" puede imprimir con: print sys.modules.keys ()
Dan Evans
No estoy seguro de por qué se editó mi publicación, pero gracias por usar la información que publiqué para corregir los errores en publicaciones anteriores. Devolverá errores si usa help () vs help (''). Esto también se aplica a dir ('') y sys (''), etc. Espero que esto ayude y no se elimine.
Dan Evans
Ignora mi última publicación, esta publicación no fue editada. Estaba pensando en una publicación similar que se encuentra aquí: stackoverflow.com/questions/139180/… Perdón por la confusión.
Dan Evans
77
Upvoted, porque este es el único método que parece funcionar en sistemas restringidos que no tienen pydocni pipinstalados (un NAS en mi caso).
Thomas
1
De acuerdo con Thomas. Estoy usando repl.it, por ejemplo, que también es un tipo de entorno restringido. help('modules')simplemente cuelga sin respuesta para mí. Pero este enfoque sysfunciona perfectamente
Parece que lo anterior solo funciona en plataformas 'nix. En cualquier caso, encontré y ejecuté el script, adaptando el comando de la siguiente manera: c: \ bin \ pythos_2.7 \ lib \ pydoc.py modules: esa lista tardó una eternidad en compilarse, el formato apesta y omite la versión instalada número. Pasaré.
David A. Gray
2
@ DavidA.Gray Acabo de probar esto en una máquina Windows con Python 3, y de hecho funciona. Usando el iniciador de ventanas de Python puedes hacerlo py -m pydoc modulesen cmd o Powershell.
VKK
pydoc modulesno funcionó para mí en Windows 10 con Python 3.6, pero la modificación @VKK: py -m pydoc modulesfunciona en cmd / Powershell.
Martin
41
A partir del pip 10, la respuesta aceptada ya no funcionará. El equipo de desarrollo ha eliminado el acceso a la get_installed_distributionsrutina. Hay una función alternativa setuptoolspara hacer lo mismo. Aquí hay una versión alternativa que funciona con pip 10:
import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s"%(i.key, i.version)for i in installed_packages])print(installed_packages_list)
Avíseme si también funcionará o no en versiones anteriores de pip.
He estado buscando esta solución y destrozando mi cerebro tratando de descubrir pkg_resources. Si pudiera votar esto más de una vez, lo haría. ¡Gracias, @Big_Al_Tx! Actualización: Excepto ... cuando hago un 'congelamiento de pip' en mi entorno virtual y lo comparo con el resultado de esto, faltan paquetes. ¿Alguna idea de por qué eso podría / sucedería?
numberwhun
@numberwhun - Me alegra que esto haya funcionado para ti. Lo siento, pero no tengo una respuesta para la discrepancia con pip freeze; La profundidad de mi conocimiento sobre este tema es bastante limitada. De alguna manera busqué la solución cuando la respuesta aceptada no funcionó para mí y traté de combinarla con una respuesta relacionada setuptoolsy la puse a funcionar.
Big_Al_Tx
github.com/pypa/pip/issues/5243 - La charla del equipo de desarrollo sobre el acceso eliminado a get_installed_distributions routine.
bl79
@ bl79 - Creo que ese es el lugar exacto donde obtuve la referencia setuptools.
Big_Al_Tx
@Big_Al_Tx: Bueno, trabajé en torno a la opción setuptools (que era muy difícil de ofuscar para mis necesidades) y seguí con esto: installed_pkgs = subprocess.check_output (['pip', 'freeze']) Hace exactamente lo que yo lo necesitaba hacer ... ¡¡Yay !!
numberwhun
26
Si necesitamos enumerar los paquetes instalados en el shell de Python, podemos usar el helpcomando de la siguiente manera
Normalmente uso pip listpara obtener una lista de paquetes (con versión).
Esto también funciona en un entorno virtual, por supuesto. Para mostrar lo que está instalado solo en el entorno virtual (no en paquetes globales), use pip list --local.
¡Esta debería ser la respuesta aceptada! Una línea :)
AlmostPitt
9
Esta solución se basa principalmente en módulos importliby pkgutilfunciona con CPython 3.4 y CPython 3.5, pero no es compatible con CPython 2.
Explicación
sys.builtin_module_names- nombra todos los módulos integrados (mira mi respuesta aquí )
pkgutil.iter_modules() - devuelve información sobre todos los módulos disponibles
importlib.util.find_spec() - devuelve información sobre la importación del módulo, si existe
BuiltinImporter- un importador de módulos integrados ( docs )
SourceFileLoader- un importador para un módulo Python estándar (por defecto tiene la extensión * .py) ( docs )
ExtensionFileLoader- un importador de módulos como biblioteca compartida (escrito en C o C ++)
Código completo
import sys
import os
import shutil
import pkgutil
import importlib
import collections
if sys.version_info.major ==2:raiseNotImplementedError('CPython 2 is not supported yet')def main():# name this file (module)
this_module_name = os.path.basename(__file__).rsplit('.')[0]# dict for loaders with their modules
loaders = collections.OrderedDict()# names`s of build-in modulesfor module_name in sys.builtin_module_names:# find an information about a module by name
module = importlib.util.find_spec(module_name)# add a key about a loader in the dict, if not exists yetif module.loader notin loaders:
loaders[module.loader]=[]# add a name and a location about imported module in the dict
loaders[module.loader].append((module.name, module.origin))# all available non-build-in modulesfor module_name in pkgutil.iter_modules():# ignore this moduleif this_module_name == module_name[1]:continue# find an information about a module by name
module = importlib.util.find_spec(module_name[1])# add a key about a loader in the dict, if not exists yet
loader = type(module.loader)if loader notin loaders:
loaders[loader]=[]# add a name and a location about imported module in the dict
loaders[loader].append((module.name, module.origin))# pretty print
line ='-'* shutil.get_terminal_size().columns
for loader, modules in loaders.items():print('{0}\n{1}: {2}\n{0}'.format(line, len(modules), loader))for module in modules:print('{0:30} | {1}'.format(module[0], module[1]))if __name__ =='__main__':
main()
Para entender cómo su enfoque es mejor / peor que el enfoque de Adam.
Léo Léopold Hertz 준영
1
@ Léo Léopold Hertz. Una respuesta corta: pruébelo usted mismo en una producción y saque conclusiones usted mismo. Respuesta larga: el enfoque de Adam se basa en el pipsistema de administración de paquetes utilizado para instalar y administrar paquetes de software escritos en Python y un resultado pip.get_installed_distributions()devuelve módulos instalados con el pip. Mi respuesta se basa completamente en la biblioteca estándar de Python y cubre todos los módulos disponibles para importar. Mi mayor inconveniente es mi respuesta: no hay soporte para el CPython 2.
PADYMKO
1
@ Léo Léopold Hertz te equivocas, lo hace. Lo probé en mi computadora. Mi respuesta contiene un significado especial **truncated**, donde se trunca una salida. Tal vez no tenga cuidado, pero si no lo hace, así que para enviarme una información sobre su sistema y la implementación de Python, haré una investigación adicional para solucionarlo.
PADYMKO
9
Advertencia: Adam Matan desaconseja este uso en pip> 10.0. Además, lea el comentario de @ sinoroc a continuación
Esto fue inspirado por la respuesta de Adam Matan (la aceptada):
import tabulate
try:from pip import get_installed_distributions
except:from pip._internal.utils.misc import get_installed_distributions
tabpackages =[]for _, package in sorted([('%s %s'%(i.location, i.key), i)for i in get_installed_distributions()]):
tabpackages.append([package.location, package.key, package.version])print(tabulate.tabulate(tabpackages))
lo que le permite discernir fácilmente qué paquetes instaló con y sin sudo.
Una nota a un lado: He notado que cuando instalo un paquete una vez a través sudoy una vez sin él, uno tiene prioridad para que el otro no aparezca en la lista (solo se muestra una ubicación). Creo que solo aparece el que está en el directorio local. Esto podría mejorarse.
@sinoroc Gracias por señalar esto. Los puntos 1 a 3 no parecen ser aplicables a esta solución, ya que este script tiene el único propósito de usar pipuna vez y luego salir. Parece ser más un problema que el comportamiento podría cambiar.
Daniel F
De acuerdo, las razones por las que no hay una API pública no se aplican a este código en particular. Pero dado que pip no está obligado a garantizar una API pública, es libre de cambiar sus API internas, estructura de código, etc. en una versión posterior, como ya lo hizo antes. Esta es la razón por la cual este código tiene una prueba / excepto, para detectar la reorganización del código interno anterior que estaba destinada a aclarar que las API internas son API internas, no públicas ( _internal). En general, obviamente funciona, pero es una mala práctica. Hay mejores alternativas, algunas están en las otras respuestas a esta pregunta.
sinoroc
1
este script no funcionará si el módulo "pip" no está allí.
Alexander Stohr
8
Además de usar pip freeze, he estado instalando yema en mis entornos virtuales.
pip freeze lo hace todo buscando paquetes, sin embargo, uno simplemente puede escribir el siguiente comando para enumerar todas las rutas donde están los paquetes de python.
Oculto en el directorio fuente de documentación en 2.5 hay un pequeño script que enumera todos los módulos disponibles para una instalación de Python.
Pros:
usa solo imp, sys, os, re, time
diseñado para ejecutarse en Python 1.5.2 y más reciente
el código fuente es realmente compacto, por lo que puede modificarlo fácilmente, por ejemplo, para pasar una lista de excepción de módulos defectuosos (no intente importarlos)
Necesitaba encontrar la versión específica de los paquetes disponibles de forma predeterminada en AWS Lambda. Lo hice con una combinación de ideas de esta página. Lo estoy compartiendo para la posteridad.
import pkgutil
__version__ ='0.1.1'def get_ver(name):try:return str(__import__(name).__version__)except:returnNonedef lambda_handler(event, context):return{'statusCode':200,'body':[{'path': m.module_finder.path,'name': m.name,'version': get_ver(m.name),}for m in list(pkgutil.iter_modules())#if m.module_finder.path == "/var/runtime" # Uncomment this if you only care about a certain path],}
Lo que descubrí es que la biblioteca boto3 proporcionada estaba desactualizada y no fue mi culpa que mi código fallara. Solo necesitaba agregar boto3 y botocore a mi proyecto. Pero sin esto, me habría estado golpeando la cabeza pensando que mi código era malo.
Aquí hay una solución de código de Python que devolverá una lista de módulos instalados. Uno puede modificar fácilmente el código para incluir números de versión.
import subprocess
import sys
from pprint import pprint
installed_packages = reqs = subprocess.check_output([sys.executable,'-m','pip','freeze']).decode('utf-8')
installed_packages = installed_packages.split('\r\n')
installed_packages =[pkg.split('==')[0]for pkg in installed_packages if pkg !='']
pprint(installed_packages)
¿Qué directorio de paquetes de sitio? Esto podría mejorar: ls / usr / {local /,} lib / python $ (python -V 2> & 1 | cut -d "" -f2 | cut -d. -F1-2) / site-packages
vezult
Además, esto no mostrará los módulos integrados, o los módulos en un PYTHONPATH personalizado, o los instalados en el "modo de desarrollo" de las herramientas de configuración, etc.
dF.
Mi /usr/local/lib/python2.5/site-packages está vacío, aunque he instalado módulos.
Léo Léopold Hertz 준영
14
Felicitaciones por no eliminar esta respuesta rechazada. Es útil para la comunidad poder ver por qué una respuesta común se considera incorrecta.
Jeremy Stein
1
@JeremyStein Una mejor estrategia (más útil y probablemente menos dañina para los representantes) probablemente sería editar la pregunta para explicar por qué está mal, una vez que esto se haya explicado en los comentarios ...
Respuestas:
Solución
¡No utilizar con pip> 10.0!
Mis 50 centavos para obtener una
pip freeze
lista similar de un script de Python:Como un revestimiento (demasiado largo):
Dando:
Alcance
Esta solución se aplica al ámbito de aplicación del sistema o a un ámbito entorno virtual, y los paquetes de cubiertas instalado por
setuptools
,pip
y ( God Forbid )easy_install
.Mi caso de uso
Agregué el resultado de esta llamada a mi servidor de matraz, así que cuando lo llamo con
http://example.com/exampleServer/environment
obtengo la lista de paquetes instalados en virtualenv del servidor. Hace que la depuración sea mucho más fácil.Advertencias
He notado un comportamiento extraño de esta técnica: cuando se invoca el intérprete de Python en el mismo directorio que un
setup.py
archivo, no enumera el paquete instalado porsetup.py
.Pasos para reproducir:
Crea un entorno virtual Clonar un repositorio git consetup.py
Nos hemos comportado
Instale el paquete python desde el repositorio gitsetup.py
en/tmp/behave
:Si ejecutamos la solución mencionada anteriormente desde
/tmp
Si ejecutamos la solución mencionada anteriormente desde
/tmp/behave
behave==1.2.5a1
falta en el segundo ejemplo, porque el directorio de trabajo contienebehave
elsetup.py
archivo 's .No pude encontrar ninguna referencia a este problema en la documentación. Quizás deba abrir un error para ello.
fuente
import pkg_resources; installed_packages = [(d.project_name, d.version) for d in pkg_resources.working_set]
AttributeError: module 'pip' has no attribute 'get_installed_distributions'
.en un shell / indicador de Python.
fuente
pydoc modules
funciona. Debe enviarlo como respuesta.python -c 'help("modules")'
Ahora, estos métodos los probé yo mismo y obtuve exactamente lo que se anunciaba: todos los módulos.
Por desgracia, realmente no te importa mucho el stdlib, sabes lo que obtienes con una instalación de Python.
Realmente, quiero las cosas que he instalado.
Lo que en realidad, sorprendentemente, funcionó bien fue:
Que volvió:
Digo "sorprendentemente" porque la herramienta de instalación de paquetes es el lugar exacto en el que uno esperaría encontrar esta funcionalidad, aunque no bajo el nombre 'congelar', pero el empaque de Python es tan extraño, que estoy asombrado de que esta herramienta tenga sentido. Pip 0.8.2, Python 2.7.
fuente
Desde pip versión 1.3, tienes acceso a:
Que parece ser azúcar sintáctico para "congelación de pepita". Enumerará todos los módulos específicos de su instalación o virtualenv, junto con sus números de versión. Desafortunadamente, no muestra el número de versión actual de ningún módulo, ni lava los platos ni lustra tus zapatos.
fuente
pip list --local
para distinguir entrevirtualenv
paquetes de sitios globales y, discutidos aquí .pip list
Es el más simple y el mejor. Aquí están las opciones y detalles.En
ipython
puedes escribir "import
Tab".En el intérprete estándar de Python, puede escribir "
help('modules')
".En la línea de comandos, puede usar .
pydoc
modules
En un guión, llame
pkgutil.iter_modules()
.fuente
pkgutil.iter_modules()
funciona, la solución pip anterior no enumera todos los paquetes, solo los instalados a través de pip.python -c 'import pkgutil;print [x[1] for x in list(pkgutil.iter_modules())]'
. Debería volcar todos los nombres de los módulos como una gran lista de Python. Elx[1]
bit se utiliza para extraer el nombre del módulo de las tuplas generadas porpkgutil.iter_modules()
.Solo uso esto para ver los módulos utilizados actualmente:
que muestra todos los módulos que se ejecutan en su python.
Para todos los módulos integrados, use:
Que es un dict que contiene todos los módulos y objetos de importación.
fuente
pydoc
nipip
instalados (un NAS en mi caso).help('modules')
simplemente cuelga sin respuesta para mí. Pero este enfoquesys
funciona perfectamenteEn shell normal solo use
fuente
py -m pydoc modules
en cmd o Powershell.pydoc modules
no funcionó para mí en Windows 10 con Python 3.6, pero la modificación @VKK:py -m pydoc modules
funciona en cmd / Powershell.A partir del pip 10, la respuesta aceptada ya no funcionará. El equipo de desarrollo ha eliminado el acceso a la
get_installed_distributions
rutina. Hay una función alternativasetuptools
para hacer lo mismo. Aquí hay una versión alternativa que funciona con pip 10:Avíseme si también funcionará o no en versiones anteriores de pip.
fuente
pip freeze
; La profundidad de mi conocimiento sobre este tema es bastante limitada. De alguna manera busqué la solución cuando la respuesta aceptada no funcionó para mí y traté de combinarla con una respuesta relacionadasetuptools
y la puse a funcionar.get_installed_distributions routine
.setuptools
.Si necesitamos enumerar los paquetes instalados en el shell de Python, podemos usar el
help
comando de la siguiente manerafuente
Normalmente uso
pip list
para obtener una lista de paquetes (con versión).Esto también funciona en un entorno virtual, por supuesto. Para mostrar lo que está instalado solo en el entorno virtual (no en paquetes globales), use
pip list --local
.Aquí hay documentación que muestra todas las
pip list
opciones disponibles , con varios buenos ejemplos.fuente
Búsqueda muy simple usando pkgutil.iter_modules
fuente
for m in iter_modules()
y funcionó también.en windows, ingrese esto en cmd
fuente
Me encontré con un python 2.7 personalizado instalado en OS X. Se requería X11 para enumerar los módulos instalados (tanto usando ayuda como pydoc).
Para poder enumerar todos los módulos sin instalar X11, ejecuté pydoc como servidor http, es decir:
Entonces es posible dirigir Safari
http://localhost:12345/
para ver todos los módulos.fuente
Prueba estos
o
fuente
Esto ayudará
En terminal o IPython, escriba:
entonces
fuente
Esta solución se basa principalmente en módulos
importlib
ypkgutil
funciona con CPython 3.4 y CPython 3.5, pero no es compatible con CPython 2.Explicación
sys.builtin_module_names
- nombra todos los módulos integrados (mira mi respuesta aquí )pkgutil.iter_modules()
- devuelve información sobre todos los módulos disponiblesimportlib.util.find_spec()
- devuelve información sobre la importación del módulo, si existeBuiltinImporter
- un importador de módulos integrados ( docs )SourceFileLoader
- un importador para un módulo Python estándar (por defecto tiene la extensión * .py) ( docs )ExtensionFileLoader
- un importador de módulos como biblioteca compartida (escrito en C o C ++)Código completo
Uso
Para el CPython3.5 (truncado)
Para el CPython3.4 (truncado)
fuente
pip
sistema de administración de paquetes utilizado para instalar y administrar paquetes de software escritos en Python y un resultadopip.get_installed_distributions()
devuelve módulos instalados con el pip. Mi respuesta se basa completamente en la biblioteca estándar de Python y cubre todos los módulos disponibles para importar. Mi mayor inconveniente es mi respuesta: no hay soporte para el CPython 2.**truncated**
, donde se trunca una salida. Tal vez no tenga cuidado, pero si no lo hace, así que para enviarme una información sobre su sistema y la implementación de Python, haré una investigación adicional para solucionarlo.Advertencia: Adam Matan desaconseja este uso en pip> 10.0. Además, lea el comentario de @ sinoroc a continuación
Esto fue inspirado por la respuesta de Adam Matan (la aceptada):
que luego imprime una tabla en forma de
lo que le permite discernir fácilmente qué paquetes instaló con y sin
sudo
.Una nota a un lado: He notado que cuando instalo un paquete una vez a través
sudo
y una vez sin él, uno tiene prioridad para que el otro no aparezca en la lista (solo se muestra una ubicación). Creo que solo aparece el que está en el directorio local. Esto podría mejorarse.fuente
pip
una vez y luego salir. Parece ser más un problema que el comportamiento podría cambiar._internal
). En general, obviamente funciona, pero es una mala práctica. Hay mejores alternativas, algunas están en las otras respuestas a esta pregunta.Además de usar
pip freeze
, he estado instalando yema en mis entornos virtuales.fuente
En caso de que tenga instalada una distribución anaconda python , también puede usar
Además de las soluciones descritas anteriormente.
fuente
conda install
, debería funcionar :)sys.modules
pip
), puede mirarpip.get_installed_distributions()
Para el segundo propósito, código de ejemplo:
fuente
/usr/bin/python
o el de python.org ? Para el primero, puedo usarsys.modules
sin problemas.system.modules
lugar desys.modules
.Para versiones recientes como Pip 20
Ejecute lo siguiente en su editor de Python o IPython
Lea otras respuestas y reúna este combo, que es más rápido y fácil dentro de Python
fuente
pip freeze lo hace todo buscando paquetes, sin embargo, uno simplemente puede escribir el siguiente comando para enumerar todas las rutas donde están los paquetes de python.
fuente
Hay muchas maneras de pelar un gato.
La forma más simple es usar la
pydoc
función directamente desde el shell con:pydoc modules
Pero para obtener más información, use la herramienta llamada pip-date que también le informa las fechas de instalación.
pip install pip-date
fuente
Hay muchas ideas, inicialmente estoy reflexionando sobre estas dos:
pipa
ayuda ('módulos')
Necesito un enfoque fácil, usando bibliotecas básicas y compatible con python 2.x antiguo
Y veo la luz: listmodules.py
Oculto en el directorio fuente de documentación en 2.5 hay un pequeño script que enumera todos los módulos disponibles para una instalación de Python.
Pros:
fuente
Necesitaba encontrar la versión específica de los paquetes disponibles de forma predeterminada en AWS Lambda. Lo hice con una combinación de ideas de esta página. Lo estoy compartiendo para la posteridad.
Lo que descubrí es que la biblioteca boto3 proporcionada estaba desactualizada y no fue mi culpa que mi código fallara. Solo necesitaba agregar boto3 y botocore a mi proyecto. Pero sin esto, me habría estado golpeando la cabeza pensando que mi código era malo.
Lo que descubrí también fue diferente de lo que publicaron oficialmente . Al momento de escribir esto:
fuente
Instalación
Código
Salida de muestra:
fuente
Aquí hay una solución de código de Python que devolverá una lista de módulos instalados. Uno puede modificar fácilmente el código para incluir números de versión.
fuente
Para cualquiera que se pregunte cómo llamar
pip list
desde un programa Python, puede usar lo siguiente:fuente
De la cáscara
Si eso no es útil, puedes hacer esto.
Y mira lo que eso produce.
fuente