Как я могу оптимизировать файл require.txt, чтобы включить только те пакеты, которые мое приложение использует напрямую? - PullRequest
2 голосов
/ 29 января 2020

Скажем, например, я добавляю django к моему venv с pip install django. Обычный способ создания моего файла needs.txt - pip freeze > requirements.txt, который выдает:

asgiref==3.2.3
Django==3.0.2
pytz==2019.3
sqlparse==0.3.0

Это все ie. Мое единственное требование - django, и (совершенно эффективное) требование.txt, которое я хочу:

Django>=3.0.2, <4

Бывают моменты, когда это имеет значение. В реальном приложении я получу множество пакетов с перекрывающимися зависимостями. При обновлении это может или не может вызвать проблемы, но почти всегда будут проблемы, если я закрепил все те зависимые пакеты, которые мне не нужны (в приведенном выше примере они принадлежат django разработчикам, а не мне). ).

Чтобы оптимизировать файл раздутых зависимостей require.txt, я могу вручную проверить исходный код (что приводит к пустому файлу require.txt выше;)), но для любого реального приложения это быстро становится непрактичным.

1 Ответ

0 голосов
/ 29 января 2020

pipreqs, как предложено { ссылка }, будет хорошим решением, если он поддерживает Python 3.7 и выше.

До тех пор pipdeptree хорошо подходит для большинства целей:

pipdeptree -l | grep -i '^[[:alnum:]]' > requirements.txt
...