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 freeze
mostrará una lista de los paquetes instalados y sus versiones. También le permite escribir esos paquetes en un archivo que luego se puede usar para configurar un nuevo entorno.
https://pip.pypa.io/en/stable/reference/pip_freeze/#pip-freeze
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