Я не уверен, что это возможно. У Google, похоже, нет ответов.

Под управлением Linux Debian я могу перечислить все pip-пакеты и размер (объем используемого дискового пространства), которые установлены?

То есть перечислить все pip пакеты с размером на диске?

29
Prometheus 14 Дек 2015 в 14:40

4 ответа

Лучший ответ

Перейти на сайт пакета, чтобы найти размер, например. https://pypi.python.org/pypi/pip/json

4
JMzance 14 Дек 2015 в 11:44

История:

На данный момент нет команды или приложений, разработанных для этой цели, мы должны проверить вручную

Ручной метод I:

du /usr/lib/python3.5/ --max-depth=2 | sort -h
du /usr/lib64/python3.5/ --max-depth=2 | sort -h

Это не включает пакеты / файлы, установленные из этого каталога, таким образом, мы сказали, что мы получим 95% с помощью этих двух простых команд

Также, если у вас установлена другая версия python, вам нужно адаптировать каталог

Ручной метод II:

pip list | sed '/Package/d' | sed '/----/d' | sed -r 's/\S+//2' | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{print $2 "/" $(find $2 -maxdepth 1 -iname $1)}' | xargs du -sh  | sort -h

Поиск в каталоге установки по имени пакета с учетом регистра

Ручной метод II, вариант I:

pip list | sed '/Package/d' | sed '/----/d' | sed -r 's/\S+//2' | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - -| awk '{print $2 "/" tolower($1)}' | xargs du -sh | sort -h

Поиск в каталоге установки с именем пакета в нижнем регистре

Ручной метод II, альтернатива II:

pip list | sed '/Package/d' | sed '/----/d' | sed -r 's/\S+//2' | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - -| awk '{print $2 "/" $1}' | xargs du -sh | sort -h

Поиск в каталоге установки по имени пакета

Примечание.

При использовании всего метода II строки, начинающиеся с du: cannot access, необходимо проверять вручную Команда берет каталог установки и добавляет к нему имя пакета, но иногда имя отличается от имени пакета, который эти альтернативы предпринимают для поиска каталога ... По крайней мере, это может быть хорошим началом для тех, кто хочет разработать приложение для этого.

Сделайте это просто:

  • Тогда используйте первый метод
  • Используйте второй метод и просто проверьте вручную пакет вне классического каталога python
1
intika 15 Апр 2018 в 06:15

Пожалуйста, попробуйте это (хотя и немного, возможно, есть лучшие решения):

$ pip list | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null

Вывод должен выглядеть так:

80K     /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/blinker
3.8M    /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/docutils
296K    /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/ecdsa
340K    /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/execnet
564K    /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/fabric
1.4M    /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/flask
316K    /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/httplib2
1.9M    /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages/jinja2
...

Должно работать, если пакет установлен в Location/Name. (местоположение и имя взяты из pip show <package>)


pip show <package> покажет вам местоположение:

---
Metadata-Version: 2.0
Name: Flask
Version: 0.10.1
Summary: A microframework based on Werkzeug, Jinja2 and good intentions
Home-page: http://github.com/mitsuhiko/flask/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD
Location: /home/lord63/.pyenv/versions/2.7.11/envs/py2/lib/python2.7/site-packages
Requires: itsdangerous, Werkzeug, Jinja2

Мы получаем Name и Location, чтобы присоединиться к ним, чтобы получить местоположение, наконец, используем du -sh, чтобы получить размер пакета.

23
Skippy le Grand Gourou 5 Фев 2019 в 16:30

Новая версия для нового формата списка пипсов:

pip2 list --format freeze|awk -F = {'print $1'}| xargs pip2 show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null|sort -h
9
Petr Mach 28 Июл 2018 в 12:11