Какие библиотеки установлены в питоне по-умолчанию?
Хочу очистить проект от лишних установленных библиотек. К сожалению, начал очистку тогда, когда еще не знал про возможность удаления библиотек вместе с зависимостями с помощью pip-autoremove. Так что теперь такая штука не работает и я наблюдаю у себя множество огрызков библиотек, которые мне вообще не нужны. Слышал что-то про файл requirements, но я его не создавал, так что по нему тоже не смогу сориентироваться. Список библиотек получаю через pip3 list. На текущий момент реально использую следующие библиотеки:
import psycopg2
import tqdm
from clickhouse_driver import Client
import datetime
from collections import defaultdict
import gc
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop
import json
Ответы (2 шт):
Встроенные модули
Список встроенных модлей из стандартной библиотеки Питона смотрите в докментации: The Python Standard Library.
Из перечисленных встроенными являются collections, datetime, gc, json. Остальные необходимо устанавливать отдельно, например, через пакетный менеджер Питона pip.
Порядок импортов
Помимо этого, в соответствии с официальными рекомендациями PEP, порядок подключения библиотек следует использовать такой:
- Стандартные библиотеки.
- Используемые сторонние модули.
- Локальные модули вашего приложения/библиотеки.
В некоторых источниках также советуют отделять несколько импортов из одного модуля, а импорты с общей приоритетностью сортировать в алфавитном порядке.
Например, вот так:
# Стандартные модули
from collections import defaultdict
import datetime
import gc
import json
# Сторонние модули
from clickhouse_driver import Client
import psycopg2
import tqdm
# Отдельно несколько строк с Торнадо
from tornado.web import Application, RequestHandler
from tornado.ioloop import IOLoop
Виртуальное окружение с зависимостями
Если в проекте много кода с разными зависимостями, то для выявления используемых библиотек следует использовать виртуальное окружение, например, модуль virtualenv. Виртуальное окружение позволяет инкапсулироваться от модулей, установленных в Питоне глобально, устанавливая библиотеки с нужными версиями в рамках конкретного проекта. По этой теме много статей как на английском, так и на русском. При запуске проекта в виртуальном окружении Вы увидите ошибки о недостающих библиотеках, которые нужно установить в локальном окружении проекта.
Однако виртуальные окружения существуют для использования модулей на месте, они не сохраняются в системах контроля версий. Для этого используется файл requirements.txt, в котором описываются нужные библиотеки и опционально их версии. Для быстрого создания этого файла можно заморозить текущие библиотеки из локального pip'a, а при создании нового окружения можно будет их легко установить из этого файла. Подробнее читайте в документации: PIP > User Guide > Requirements Files.
В итоге решил просто удалить все пакеты кроме pip. Далее протестировал работоспособность проекта и на сообщения об ошибках просто доустанавливал необходимые пакеты. Размер проекта сократился с 250МБ до 46МБ. Никаких проблем не возникло.