Переустановите / обновите все пакеты пользовательского сайта python, а не глобальные Ubuntu

Вы можете попробовать и посмотреть журналы. Это не очень интересно, тем более, что вы часто не знаете, что искать. Следующие, скорее всего, дадут подсказки:

/var/log/dmesg
/var/log/dmesg.0
/var/log/Xorg.0.log

Если вы находите системные журналы слишком загадочными, отправьте их на http://www.pastebin.com/, чтобы другие могли посмотреть.

0
задан 11 August 2017 в 08:02

3 ответа

Правильный путь

Создайте список всех пакетов python:

pip list --format=legacy | awk '{print $1}' | sed 's/.*/\L&/' | sort  > /tmp/list.pip

затем создайте список всех этих пакетов, которые были установлены с помощью 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

Теперь мы получили список пакетов python, /tmp/list.pip, которые pip может удалить, и /tmp/list.apt, которые являются пакетами, установленными apt, проверьте их вручную и удалите те, которые не являются в /tmp/apt.list.

Из-за разного соглашения об именах между apt и pip, решение ниже работает неправильно. Я исправлю это последним ...

Наконец, получите список всех пакетов, которые были установлены только pip, а не apt (пакеты существуют в файле /tmp/list.pip, но не /tmp/list.apt). :

comm /tmp/list.apt /tmp/list.pip -3 > /tmp/list_toRemove

Затем используйте /tmp/list_toRemove содержимое для удаления или обновления пакетов pip.

Например, чтобы удалить их все, что вы можете запустить:

pip uninstall $(cat /tmp/list_toRemove)
]

и переустановить их:

pip install $(cat /tmp/list_toRemove) --user

Неправильно

Использование таких команд, как:

pip list --user
pip list --local
pip freeze --user
pip freeze --local

также включает пакеты, установленные apt из определенных путей, поэтому не используйте эти команды.

2
ответ дан 22 May 2018 в 19:35
  • 1
    Ваша вторая команда (dpkg -l $(cat /tmp/list.pip) ...), похоже, не захватывает все пакеты, установленные через apt. Например: apt search jinja | grep installed говорит мне, что у меня есть python-Jinja2, установленный через apt, но это не появляется в /tmp/list.apt. – Daniel Hathcock 11 August 2017 в 08:05
  • 2
    Вторая команда включает только пакеты, которые видны через pip, поэтому нет необходимости находить все пакеты, установленные apt, мы получаем список всех пакетов, которые можно контролировать с помощью pip, тогда мы исключаем те, которые apt знает. – Ravexina 11 August 2017 в 08:07
  • 3
    pip list показывает Jinja2 как установленный пакет. Является ли Jinja2, что pip знает о не том же пакете, что и python-jinja2, о котором apt знает? – Daniel Hathcock 11 August 2017 в 08:10
  • 4
    @DanielHathcock Хорошо, я проверил его снова ... из-за разных соглашений об именах между apt и pip, это может случиться, я обновил ответ, чтобы исправить проблему, однако вы должны проверять списки вручную, это самый близкий вещь, которую я мог бы получить ... другое дело, что у вас может быть 2 варианта пакета, один из которых установлен apt другим при помощи пипса ... это очень сложно обнаружить. – Ravexina 11 August 2017 в 09:30
  • 5
    Я поймал несколько, у которых были странные имена (т. Е. [F1] - pip, но python-xdg - apt). Кроме этого это сработало хорошо. Спасибо! – Daniel Hathcock 12 August 2017 в 07:40

Правильный путь

Создайте список всех пакетов python:

pip list --format=legacy | awk '{print $1}' | sed 's/.*/\L&/' | sort > /tmp/list.pip

затем создайте список всех этих пакетов, которые были установлены с помощью 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

Теперь мы получили список пакетов python, /tmp/list.pip, которые pip может удалить, и /tmp/list.apt, которые являются пакетами, установленными apt, проверьте их вручную и удалите те, которые не являются в /tmp/apt.list.

Из-за разного соглашения об именах между apt и pip, решение ниже работает неправильно. Я исправлю это последним ...

Наконец, получите список всех пакетов, которые были установлены только pip, а не apt (пакеты существуют в файле /tmp/list.pip, но не /tmp/list.apt). :

comm /tmp/list.apt /tmp/list.pip -3 > /tmp/list_toRemove

Затем используйте /tmp/list_toRemove содержимое для удаления или обновления пакетов pip.

Например, чтобы удалить их все, что вы можете запустить:

pip uninstall $(cat /tmp/list_toRemove) ]

и переустановить их:

pip install $(cat /tmp/list_toRemove) --user

Неправильно

Использование таких команд, как:

pip list --user pip list --local pip freeze --user pip freeze --local

также включает пакеты, установленные apt из определенных путей, поэтому не используйте эти команды.

2
ответ дан 18 July 2018 в 08:42

Правильный путь

Создайте список всех пакетов python:

pip list --format=legacy | awk '{print $1}' | sed 's/.*/\L&/' | sort > /tmp/list.pip

затем создайте список всех этих пакетов, которые были установлены с помощью 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

Теперь мы получили список пакетов python, /tmp/list.pip, которые pip может удалить, и /tmp/list.apt, которые являются пакетами, установленными apt, проверьте их вручную и удалите те, которые не являются в /tmp/apt.list.

Из-за разного соглашения об именах между apt и pip, решение ниже работает неправильно. Я исправлю это последним ...

Наконец, получите список всех пакетов, которые были установлены только pip, а не apt (пакеты существуют в файле /tmp/list.pip, но не /tmp/list.apt). :

comm /tmp/list.apt /tmp/list.pip -3 > /tmp/list_toRemove

Затем используйте /tmp/list_toRemove содержимое для удаления или обновления пакетов pip.

Например, чтобы удалить их все, что вы можете запустить:

pip uninstall $(cat /tmp/list_toRemove) ]

и переустановить их:

pip install $(cat /tmp/list_toRemove) --user

Неправильно

Использование таких команд, как:

pip list --user pip list --local pip freeze --user pip freeze --local

также включает пакеты, установленные apt из определенных путей, поэтому не используйте эти команды.

2
ответ дан 24 July 2018 в 19:09

Другие вопросы по тегам:

Похожие вопросы: