Проект должен позволять запускать разные скрипты с разными окружениями aka набором зависимостей. Перед запуском скрипта должно создаваться виртуальное окружение, устанавливаться pip install и лишь после этого запускаться.
Создание окружения является дополнительным этапом (состоянием) жабки. Создание окружения может окончиться ошибкой. Создание окружения есть задача песочницы (sandbox).