Как эффективно использовать virtualenv с библиотеками, хранящимися в системе контроля версий? - PullRequest
3 голосов
/ 29 ноября 2011

Мне известны 2 предлагаемые практики, которые кажутся противоречащими друг другу:

  1. Храните все, что нужно для вашего проекта в системе контроля версий. При работе с приложениями на C ++ мы проверяем все наши библиотеки в системе контроля версий, чтобы у нового разработчика всегда было все, что ему нужно для создания и запуска проекта, даже если сторонние библиотеки больше не доступны в Интернете.

  2. Используйте virtualenv с проектами Python, чтобы изолировать проект и его зависимости от обновлений, выполненных до системы Python. Каждая установленная библиотека находится внутри virtualenv, и обычно virtualenvs привязаны к определенному пути (как предлагается в документации), и ожидается, что разработчики сами устанавливают среду, а затем предположительно добавляют любые библиотеки, являющиеся зависимостями.

В идеале я хотел бы иметь возможность устанавливать новые зависимости в virtualenv внутри моего репозитория управления версиями, регистрировать его, и тогда другие разработчики получат правильные зависимости при обновлении, без конфликтов, независимо от того, какие библиотеки их системы Python установил. Но я понимаю, что возникнет проблема с проверкой целого virtualenv в управлении исходным кодом, поскольку разные разработчики могут запускать разные интерпретаторы (в зависимости от их ОС) и могут нуждаться в разных сборках определенных расширений. Возможно, это ограничивает то, как далеко я могу пойти с этим подходом.

Итак, существует ли компромисс, который сводит к минимуму объем ручной установки библиотек, который необходимо выполнить на каждой машине, и который максимально поддерживает контроль версий, чтобы уменьшить риск исчезновения пакетов из Интернета?

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Вы можете достичь того, чего хотите, используя комбинацию virtualenv и pip. С помощью pip вы можете заморозить требования используя:

pip freeze > requirements.txt

В другой среде virtualenv вы можете установить требования с помощью:

pip install -r requirements.txt

Больше чтения: http://www.pip -installer.org / ru / latest / needs.html # freezing-требованиям

2 голосов
/ 29 ноября 2011

Я бы проверил комплект пипсов в системе контроля версий: http://www.pip -installer.org / ru / latest / creation.html # bundles

Вы можете использовать --index-url, чтобы указать pip, где взять пакеты, если вы хотите хранить их в своей сети, чтобы им не приходилось получать их из PyPI или где-либо: http://www.pip -installer .org / ный / последняя / usage.html # альтернативных-пакет-хранилища

У каждого разработчика будет свой собственный virtualenv, и он будет обновлять его. Вы можете иметь скрипт обновления в системе контроля версий, чтобы они периодически запускались.

...