Если Debian ведет себя как последние версии Ubuntu относительно цели по умолчанию pip install
, это очень просто: он устанавливается на /usr/local/lib/
вместо /usr/lib
(apt
цель по умолчанию). Чек https://askubuntu.com/questions/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip/259747#259747
Я - пользователь ArchLinux, и, экспериментируя с pip, я столкнулся с той же проблемой. Вот как я решил это в Arch.
find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs pacman -Qo | grep 'No package'
Ключ здесь /usr/lib/python2.7/site-packages
, то есть каталог, в который устанавливается пип, YMMV. pacman -Qo
- это то, как Arch pac kage man ager проверяет право собственности на файл. No package
является частью возврата, который он дает, когда ни один пакет не владеет файлом: error: No package owns $FILENAME
. Хитрый обходной путь: я спрашиваю о __init__.py
, потому что pacman -Qo
немного неосведомлен, когда дело доходит до каталогов: (
Чтобы сделать это для других дистрибутивов, вы должны выяснить, куда pip
устанавливает что-то (просто sudo pip install
что-то), как запросить право собственности на файл (метод Debian / Ubuntu - dpkg -S
) и что это возвращение «ни один пакет не владеет этим путем» (Debian / Ubuntu no path found matching pattern
). Пользователи Debian / Ubuntu, будьте осторожны: dpkg -S
не удастся, если вы дадите ему символическую ссылку. Просто разрешите сначала, используя realpath
. Как это:
find /usr/local/lib/python2.7/dist-packages -maxdepth 2 -name __init__.py | xargs realpath | xargs dpkg -S 2>&1 | grep 'no path found'
Пользователи Fedora могут попробовать (спасибо @eddygeek):
find /usr/lib/python2.7/site-packages -maxdepth 2 -name __init__.py | xargs rpm -qf | grep 'not owned by any package'