Репликация / воспроизведение среды разработки Django - PullRequest
3 голосов
/ 11 августа 2011

Я работаю со своими друзьями над проектом Django. Проект имеет зависимости от некоторых модулей Python. У меня есть django и эти дополнительные зависимости, установленные внутри virtualenv. Код проекта django находится в репозитории, доступном для всех друзей, которые могут оформить заказ / клонировать, а затем внести в него код. Но есть ли способ воспроизвести настройки, которые есть в моей среде разработки, на компьютерах моих друзей, то есть что-то, что установит все дополнительные зависимости и подготовит среду к развертыванию?

Я слышал о zc.buildout. Просто взглянул на это, не вдаваясь слишком глубоко. Это кажется сложным. Есть ли другие способы добиться этого? Среды разработки, используемые моими друзьями, варьируются от GNU / Linux до MS Windows.

Ответы [ 2 ]

3 голосов
/ 12 августа 2011

buildout.cfg:

[buildout]
parts = python

[python]
recipe = zc.recipe.egg
eggs =
    your
    egg
    dependencies
    here
interpreter = python

Получить bootstrap.py .Тогда:

$ python bootstrap.py
$ bin/buildout
$ bin/python ...
3 голосов
/ 11 августа 2011

virtualenv имеет замечательную особенность, в которой он создает свою копию с еще парой хуков.В вашем случае важным хуком является after_install, который будет выполняться сразу после установки virtualenv.

Просто создайте скрипт со следующим содержимым:

import os, virtualenv

extra_text = """
import os, subprocess
def after_install(options, home_dir):
    subprocess.call([
        os.path.join(home_dir, 'bin', 'pip'),
        'install',
        '-r', 
        'relative_path_from_env_home_to_requirements_file',
    ])

def adjust_options(options, args):
    if not args: args.append('.')
"""

output = virtualenv.create_bootstrap_script(extra_text)
open('bootstrap.py', 'w').write(output)

и выполните его.Он создаст файл bootstrap.py, который должен выполнить ваш собеседник для начальной загрузки как virtualenv, так и требуемых пакетов:

./bootstrap.py --no-site-packages

virtualenv создается в корне проекта, поэтому обязательно svn: ignoreили .gitignore созданные dirs перед фиксацией.

Единственный недостаток этого заключается в том, что AFAIK не интегрирован с virtualenvwrapper.Но в любом случае смысл этого в том, чтобы окружение было в проекте, а в virtualenvwrapper - окружение в вашем домашнем каталоге.

...