caminho correto
Crie uma lista de todos os pacotes python:
pip list --format=legacy | awk '{print $1}' | sed 's/.*/\L&/' | sort > /tmp/list.pip
crie uma lista de todos esses pacotes que foram instalados por apt
:
cat /tmp/list.pip | sed 's/.*/\L&/' |
xargs -Ipkg dpkg -l python-pkg python3-pkg pkg |& grep ^ii |
awk '{print $2}' | sed -r s/^python3?-// | sort | uniq > /tmp/list.apt
Agora chegamos à lista de pacotes python, /tmp/list.pip
que pip
é capaz de remover e /tmp/list.apt
que são pacotes instalados por apt
, verifique-os manualmente e remova os que não estão em /tmp/apt.list
.
Por causa da convenção de nomenclatura diferente entre apt e pip, a solução abaixo não está funcionando corretamente . Vou consertar isso mais tarde ...
Finalmente, obtenha uma lista de todos os pacotes que foram instalados apenas por pip
e não apt
(os pacotes existem no arquivo /tmp/list.pip
, mas não em /tmp/list.apt
):
comm /tmp/list.apt /tmp/list.pip -3 > /tmp/list_toRemove
Em seguida, use o conteúdo /tmp/list_toRemove
para remover ou atualizar seus pacotes pip
.
Por exemplo, para removê-los tudo o que você pode executar:
pip uninstall $(cat /tmp/list_toRemove)
e reinstalá-los:
pip install $(cat /tmp/list_toRemove) --user
caminho errado
Usando comandos como:
pip list --user
pip list --local
pip freeze --user
pip freeze --local
também inclui pacotes instalados por apt
de caminhos específicos, portanto, não use esses comandos.