Вот типичный рабочий процесс при работе с виртуальными средами:
1) Создать виртуальное окружение:
python3 -m venv venv
2) Активировать его:
source venv/bin/activate
3) Установить необходимые требования:
(venv): pip install ...
4) (написать код пакета)
5) Заморозить Код / Создать пакет зависимостей.
В последний момент выбранный инструмент python оборачивает все пакеты из моей виртуальной среды, установленной в точке 3).
И вот моя проблема. Что если некоторые требования, установленные в пункте 3), являются только частными пакетами, которые используются только мной для целей разработки? Например, чтобы редактор Spyder работал в разных виртуальных средах, мне нужно установить ядра spyder. Они не нужны для моего пакета и не нужны другим разработчикам, если они не используют этот редактор. Однако, когда я
(venv): pip freeze > requirements.txt
, я получаю файл require.txt с включенным в него пакетом spyder-kernels, а затем
(venv2): pip install -r requirements.txt
Устанавливает все пакеты из файла require.txt, если только я не удаляю ненужные строки вручную.
Существует ли какой-либо флаг для установки pip, который может указать pip установить некоторые пакеты как скрытые / частные для процесса замораживания / упаковки? Или любой другой автоматический c обходной путь, который мог бы достичь моей цели? Идеальный сценарий будет выглядеть примерно так:
python3 -m venv venv
source venv/bin/activate
(venv): pip install important_packages
(venv): pip install -privateFLAG spyder-kernels
(venv): pip freeze > requirements.txt # (stores important_packages)
(venv): pip freeze -privateFLAG > private_requirements.txt
, и тогда можно будет воссоздать зависимости среды с помощью: '' 'pip install -r needs.txt' '' или '' 'pip install - r needs.txt private_requirements.txt '' 'если ему нужно что-то в private_requirements.txt.
Можем ли мы сделать какой-то похожий трюк для замораживания кода?