Escribí un script de python(enlace esencial)que verifica todos los paquetes de python si se instalaron con pacman
.
Descarga el script y hazlo ejecutable:
$ wget https://gist.github.com/hoefling/314565368a66c308b4d7d407a3028cb7/raw/7b81553fa0a84b92a90fbaa0746482d0ec18516c/pip-query -O pip-query
$ chmod +x pip-query
Aquí hay un ejemplo llamándolo en un contenedor acoplable base/archlinux
donde he instalado python-pip
ypython-wheel
:
$./pip-query
Package Version Owner
---------- ------- -----------------
appdirs 1.4.3 python-appdirs
packaging 17.1 python-packaging
pip 9.0.1 python-pip
pyparsing 2.2.0 python-pyparsing
setuptools 39.2.0 python-setuptools
six 1.11.0 python-six
wheel 0.31.1 python-wheel
La salida se parece a la salida de pip list --format=columns
, pero con una columna adicional Owner
que imprime el nombre del paquete del sistema que posee el paquete python.
Probemos con un paquete instalado directamente conpip
:
$ sudo pip install tqdm
...
$./pip-query
Package Version Owner
---------- ------- -----------------
appdirs 1.4.3 python-appdirs
packaging 17.1 python-packaging
pip 9.0.1 python-pip
pyparsing 2.2.0 python-pyparsing
setuptools 39.2.0 python-setuptools
six 1.11.0 python-six
tqdm 4.23.4
wheel 0.31.1 python-wheel
La columna Owner
tiene una celda vacía en la fila tqdm
, esto indica que tqdm
no fue instalado por pacman
. Desinstalar tqdm
conpip
:
$ sudo pip uninstall -y tqdm
e instalarlo conpacman
:
$ pacman -S python-tqdm
Si lo desea, coloque el archivo pip-query
en algún lugar de su PATH
, preferiblemente algo local como $HOME/.local/bin
para llamarlo como un ejecutable adecuado con
$ pip-query
Debería ser bastante fácil adaptar el script para usarlo con otros administradores de paquetes si lo desea. Por ejemplo, si cambio ['pacman', '-Qqo', file]
a ['qfile', '-q', file]
, el script funcionará en Gentoo sin más modificaciones *. Si su administrador de paquetes no admite la impresión pura del nombre del paquete, extraiga la información relevante de la cadena out
con expresiones regulares o lo que sea.
pacman
Puede modificar pip-query
, o seguir la filosofía de Unix y escribir algún comando bash que haga la reinstalación por usted. Sin embargo, debe lidiar con varias sugerencias hechas porpacman
(como en el siguiente ejemplo )e implementar el caso cuando no se sugirió nada. Aquí está mi humilde intento (no un experto en bash):
$./pip-query | tail -n +3 | while read line ; do split=(${line}); \
> if [ "${#split[@]}" -eq "2" ]; then pkgname=${split[0]}; \
> echo -e "Suggestion: pip uninstall -y $pkgname && pacman -S $(pacman -Sspq $pkgname | tr '\n' ' ')"; \
> fi; done
Suggestion: pip uninstall -y tqdm && pacman -S python-tqdm python2-tqdm
Mejore esto y tendrá una solución automatizada para la tarea de reinstalación.
*:suponiendo que app-portage/portage-utils
emerja.
Значит, проблема была вот в чем :Команда по умолчанию для закрытия приложений — Super+W. Мне пришлось изменить ее на Alt + f4