paquetes librerias instalar actualizar python pip easy-install pypi

librerias - install python ubuntu



Encuentra todos los paquetes instalados con easy_install/pip? (16)

A partir de la versión 1.3 de pip ahora puede utilizar la pip list

Tiene algunas opciones útiles que incluyen la capacidad de mostrar paquetes obsoletos. Aquí está la documentación: https://pip.pypa.io/en/latest/reference/pip_list/

¿Hay alguna manera de encontrar todos los paquetes PyPI de Python que se instalaron con easy_install o pip? Quiero decir, excluyendo todo lo que estaba / está instalado con las herramientas de distribución (en este caso, apt-get en Debian).


Agregando a la respuesta de Paul Paul Woolcock,

$ pip freeze > requirements.txt

creará un archivo de requisitos con todos los paquetes instalados en el entorno activo en la ubicación actual que puede ejecutar

$ pip install -r requirements.txt

Para instalar los requisitos en otro entorno.


Al menos para Ubuntu (quizás también otros) funciona esto (inspirado en una post anterior en este hilo):

printf "Installed with pip:"; pip list 2>/dev/null | gawk ''{print $1;}'' | while read; do pip show "${REPLY}" 2>/dev/null | grep ''Location: /usr/local/lib/python2.7/dist-packages'' >/dev/null; if (( $? == 0 )); then printf " ${REPLY}"; fi; done; echo


Aquí está el one-liner para fedros u otras distribuciones de rpm (basado en las sugerencias de @barraponto):

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep ''not owned by any package''

Agregue esto al comando anterior para obtener una salida más limpia:

| sed -r ''s:.*/(/w+)/__.*:/1:''


El siguiente es un poco lento, pero proporciona una lista de paquetes bien formateada que el pip sabe. Es decir, no todos se instalaron "por" pip, pero todos deberían poder actualizarse por pip.

$ pip search . | egrep -B1 ''INSTALLED|LATEST''

La razón por la que es lento es que enumera los contenidos de todo el repositorio de pypi. Presenté un ticket sugiriendo que la pip list proporciona una funcionalidad similar pero de manera más eficiente.

Salida de muestra: (restringió la búsqueda a un subconjunto en lugar de ''.'' Para todos.)

$ pip search selenium | egrep -B1 ''INSTALLED|LATEST'' selenium - Python bindings for Selenium INSTALLED: 2.24.0 LATEST: 2.25.0 -- robotframework-selenium2library - Web testing library for Robot Framework INSTALLED: 1.0.1 (latest) $


Empezar con:

$ pip list

Para enumerar todos los paquetes. Una vez que haya encontrado el paquete que desea, use:

$ pip show <package-name>

Esto le mostrará los detalles de este paquete, incluida su carpeta. Puede omitir la primera parte si ya conoce el nombre del paquete.

Haga clic here para obtener más información sobre pip show y https://pip.pypa.io/en/latest/reference/pip_list/ para obtener más información sobre la lista de pip.

Ejemplo:

$ pip show jupyter Name: jupyter Version: 1.0.0 Summary: Jupyter metapackage. Install all the Jupyter components in one go. Home-page: http://jupyter.org Author: Jupyter Development Team Author-email: [email protected] License: BSD Location: /usr/local/lib/python2.7/site-packages Requires: ipywidgets, nbconvert, notebook, jupyter-console, qtconsole, ipykernel


Las versiones más recientes de pip tienen la capacidad de hacer lo que quiere el OP a través de pip list -l o pip freeze -l . En Debian (al menos) la página del manual no lo aclara, y solo lo descubrí, bajo el supuesto de que la característica debe existir, con la lista de elementos de compilación - ayuda .

Hay comentarios recientes que sugieren que esta característica no es evidente ni en la documentación ni en las respuestas existentes (aunque algunos lo sugirieron), así que pensé que debería publicar. Hubiera preferido hacerlo como un comentario, pero no tengo los puntos de reputación.


Obtenga todos los nombres de archivos / carpetas en site-packages/ (y dist-packages/ si existe), y use su administrador de paquetes para eliminar los que se instalaron a través del paquete.


Para aquellos que no tienen pip instalado, encontré este script rápido en github (funciona con Python 2.7.13):

import pkg_resources distros = pkg_resources.AvailableDistributions() for key in distros: print distros[key]


Si Debian se comporta como las versiones recientes de Ubuntu con respecto al destino predeterminado de la pip install , es muy fácil: se instala en /usr/local/lib/ lugar de /usr/lib (objetivo predeterminado de apt ). Consulte https://askubuntu.com/questions/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747

Soy un usuario de ArchLinux y cuando experimenté con pip encontré este mismo problema. Así es como lo resolví en arco.

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs pacman -Qo | grep ''No package''

La clave aquí es /usr/lib/python2.7/site-packages , que es el directorio que pip instala, YMMV. pacman -Qo es la forma en que el pacman -Qo Arch kage comprueba la propiedad del archivo. No package es parte de la devolución que da cuando ningún paquete posee el archivo: error: No package owns $FILENAME . __init__.py : estoy consultando acerca de __init__.py porque pacman -Qo es un poco ignorante cuando se trata de directorios :(

Para hacerlo con otras distribuciones, debes averiguar dónde instala pip cosas (solo sudo pip install algo), cómo consultar la propiedad de un archivo (el método Debian / Ubuntu es dpkg -S ) y cuál es el "no package es dueño de esa ruta "return (Debian / Ubuntu no path found matching pattern es no path found matching pattern ). Debian / usuarios de Ubuntu, ten cuidado: dpkg -S fallará si le das un enlace simbólico. Solo resuélvelo primero usando realpath . Me gusta esto:

find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | xargs dpkg -S 2>&1 | grep ''no path found''

Los usuarios de Fedora pueden probar (gracias @eddygeek):

find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep ''not owned by any package''


Si alguien se está preguntando, puede usar el comando ''pip show''.

pip show [options] <package>

Esto listará el directorio de instalación del paquete dado.


Si usa la distribución python de Anaconda , puede usar el comando conda list para ver qué se instaló con qué método:

user@pc:~ $ conda list # packages in environment at /anaconda3: # # Name Version Build Channel _ipyw_jlab_nb_ext_conf 0.1.0 py36h2fc01ae_0 alabaster 0.7.10 py36h174008c_0 amqp 2.2.2 <pip> anaconda 5.1.0 py36_2 anaconda-client 1.6.9 py36_0

Para agarrar las entradas instaladas por pip (incluyendo posiblemente pip sí):

user@pc:~ $ conda list | grep /<pip amqp 2.2.2 <pip> astroid 1.6.2 <pip> billiard 3.5.0.3 <pip> blinker 1.4 <pip> ez-setup 0.9 <pip> feedgenerator 1.9 <pip>

Por supuesto, probablemente solo quieras seleccionar la primera columna, que puedes hacer con (excluyendo pip si es necesario):

user@pc:~ $ conda list | awk ''$3 ~ /pip/ {if ($1 != "pip") print $1}'' amqp astroid billiard blinker ez-setup feedgenerator

Finalmente, puede capturar estos valores y desinstalarlos todos usando lo siguiente:

user@pc:~ $ conda list | awk ''$3 ~ /pip/ {if ($1 != "pip") print $1}'' | xargs pip uninstall -y

Tenga en cuenta el uso del indicador -y para la pip uninstall para evitar tener que dar confirmación para eliminar.


Tenga en cuenta que si tiene varias versiones de Python instaladas en su computadora, puede tener algunas versiones de pip asociadas con cada una.

Dependiendo de sus asociaciones, es posible que tenga que tener mucho cuidado con el comando pip que utiliza:

pip3 list

Trabajó para mí, donde estoy ejecutando Python3.4. El simple hecho de usar pip list devolvió el error. The program ''pip'' is currently not installed. You can install it by typing: sudo apt-get install python-pip The program ''pip'' is currently not installed. You can install it by typing: sudo apt-get install python-pip .


pip freeze enumera todos los paquetes instalados, incluso si no es por pip / easy_install. En CentOs / Redhat se encuentra un paquete instalado a través de rpm.



pip.get_installed_distributions() proporcionará una lista de los paquetes instalados

import pip from os.path import join for package in pip.get_installed_distributions(): print(package.location) # you can exclude packages that''s in /usr/XXX print(join(package.location, package._get_metadata("top_level.txt"))) # root directory of this package