2016-08-09 2 views
2

Итак, у меня есть приложение на основе пирамиды на основе Python, и мой рабочий процесс разработки в основном состоял в том, чтобы загружать измененные файлы непосредственно в производственную зону.Попытка создать экземпляр разработки для проекта пирамиды Питона

Ближе к запуску, и, очевидно, это больше не будет работать.

Мне удалось отредактировать строки подключения и development.ini и указать экземпляр разработки на вторичную базу данных.

Теперь мне нужно выяснить, как создать другую копию проекта где-нибудь, где я могу работать над вещами, а затем вносить изменения в жизнь.

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

Затем я в основном создаю совершенно новый проект под названием myproject-dev. Я прошел через инструкции по установке:

Я использовал pcreate, а затем setup.py, а затем я скопировал свой проект development.ini из моего проекта и тщательно отредактировал различные ссылки на myproject-dev вместо myproject. Затем initialize_myproject-dev_db /var/www/projects/myproject/development.ini

Наконец, я получаю хорошую пирамиду страницу приветствия, что все работает правильно.

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

Видимо, я ссылаюсь на myproject в include, а также на статические URL-адреса, и кто знает, где еще.

Я не думаю, что эта идея будет работать, поэтому я сейчас от нее отказался.

Может ли кто-нибудь дать мне представление о том, как люди собираются создать экземпляр разработки для проекта пирамиды Python?

+0

Этот путь '/ var/www/projects/myproject/development.ini' меня беспокоит - означает ли это, что если я перейду на http://yoursite.com/projects/myproject/development.ini, это покажет мне содержимое этого файла, пароль базы данных и все такое? – Sergey

+0

Нет, я только что пришел из PHP, и это было место, которое имело смысл для меня. Теперь я понимаю, что это действительно может пойти куда угодно. Я запускаю все, используя полный путь к виртуальной среде Python. Все обслуживается WSGI, и я ничего не могу получить без запуска WSGI-сервера. –

ответ

2

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

В дополнение к преимуществам управления изменениями, внесенными в приложение при разработке, он также упростит обмен копиями между разработчиками ... или с производственным развертыванием. Действительно, производство может быть просто git clone проекта, как и ваш экземпляр разработки.

Во-вторых, вам нужно установить проект в свой путь к библиотеке Python. Так будут работать все import s и include s.

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

У вас, вероятно, есть сценарий setup.py в вашем проекте. Если нет, create one. Затем установите свой проект с pip install . в производство, или pip install -e . в разработке.

+0

Спасибо за подсказку. У меня на самом деле есть проект в источнике управления, и все мои библиотеки Python установлены в виртуальной среде. Проблема заключается в том, что я должен ссылаться на имя проекта в различных местах, например, когда я импортирование модели: из myproject.models.meta импорта DBSession из myproject.models.users Импорт пользователя из myproject.models .users импорта Работнику , а также в статических ссылок: $ {request.static_url (MyProject: статический/администратор/CSS/Main.css')} Я просто не могу пройти через во время развертывания и начать поиск и замена мой код. –

+0

@JeremyT: вам нужны две отдельные виртуальные среды, каждая из которых может иметь свой отдельный модуль 'myproject' (и, возможно, разные версии других библиотек, которые использует ваше приложение). Кроме того, альтернативно к virtualenv вы можете посмотреть 'zc.buildout'. Также взгляните на 'fabric' как альтернативу развертыванию через git – Sergey

+0

@Sergey боялся этого, но это имеет смысл. Это просто потребовало меня навсегда, чтобы настроить эту виртуальную среду –

1

Вот как мне удалось мое последнее приложение Pyramid:

я имел одновременно development.ini и production.ini. На самом деле у меня был development.local.ini в дополнение к двум другим - один для местной разработки, один для нашей «тестовой» системы и один для производства. Я использовал git для контроля версий и имел основную ветвь для развертывания производства. На моем prod-сервере я создал виртуальную среду и т. Д., Затем вытащил свою основную ветку и запустил с помощью конфигурационного файла production.ini. Обновления в основном включали перескакивание назад в virtualenv и извлечение последних обновлений из репо, а затем перезапуск сервера пирамиды.

Смежные вопросы