А как CI/CD решает эту проблему? Ты имеешь в виду, что разработчик добавляет зависимости в requirements.in, CI/CD потом генерирует lock-файл (requirements.txt) и коммит его в репозиторий?
я подразумеваю, что всю рутину по сборке и доставке надо описывать в CI/CD. То что мы обсуждаем о pipenv и есть эта рутина для CI/CD. Еси понадобится описать какую-то кастомизацию одного сервиса через разные зависимости и их версии(что является редким случаем несущим больше проблем, т.к. поддержка такого кода требует много усилий, а соответственно должна быть твердо обоснованной), то эта кастомизация заносится в CI/CD , т.к. он является основным интерфейсом программным и графичексим для сборки и доставки.
пользуйтесь pip, venv, отдавайте предпочтение минималистичности и простоте, если отсутствует прямая потребность в усложнении