Включение подмодулей Git в pythonpath при использовании virtualenv - PullRequest
2 голосов
/ 13 декабря 2011

Я использую Git для контроля версий в проекте Django.

Насколько это возможно, весь исходный код, который сам по себе не является частью проекта, но зависит от проекта, вводится как подмодули Git.Они живут в каталоге lib и должны быть включены в путь Python.Структура каталогов / файлов выглядит следующим образом:

.git
docs
lib
my_project
    apps
    static
    templates
    __init__.py
    urls.py
    manage.py
    settings.py
    .gitmodules
README

Что, по вашему мнению, является наилучшей практикой для включения библиотек libs в путь python?

Я использую virtualenv, так что я мог бы легко скомпоновать библиотеки с каталогом site-packages в virtualenv.Однако это свяжет virtualenv с этим конкретным проектом.я понимаю, что virtualenv не должен зависеть от моих файлов.вместо этого мои файлы должны зависеть от virtualenv.

Я думал об использовании одного и того же virtualenv для разных локальных копий этого проекта, но если я сделаю это так, я потеряю эту способность.Любая лучшая идея, как подойти к этому?


Обновление:

Лучшим решением оказалось позволить pip управлять всеми зависимостями.

Однако это означает, что вы не можете использовать подмодули git, поскольку pip пока не может правильно обрабатывать относительные пути .Таким образом, внешние зависимости должны жить на virtualenv (обычно: my_env / src / a_python_module).

Я бы все же предпочел использовать подмодули, чтобы некоторые зависимости жили в моем дереве проекта.Это имеет больше смысла для меня, так как мне уже нужно было раскошелиться на эти репозитории, чтобы изменить некоторые из них, и, вероятно, придется изменить их еще немного в будущем.

1 Ответ

3 голосов
/ 13 декабря 2011

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

pip freeze > requirements.txt

каждый раз, когда вам нужен свежий virtualenv, который вы просто должны сделать:

virtualenv <name> --no-site-packages
pip install -r requirements.txt

install -r needs.txt прекрасно работает и в том случае, если вы хотите обновиться до более новых пакетов

просто синхронизируйте файл require.txt с вашими пакетами (запуская pip freeze каждый раз, когда что-то меняется), и выготово, независимо от того, сколько у вас virtualenv.

ПРИМЕЧАНИЕ: если вам нужно выполнить какую-то разработку пакета, вы можете установить его, используя параметр -e (редактируемый), таким образом вы можете отредактировать пакет, и выне нужно удалять / устанавливать каждый раз, когда вы хотите протестировать новые вещи:)

...