Пишем web на Python3, восстанавливаем проект в новом окружении

newbie

Опубликован:  2019-02-10T08:30:26.654268Z
Отредактирован:  2019-02-15T04:22:47.573314Z

Продолжаем работу над проектом selfish. Внешние обстоятельства слегка отвлекли меня от работы над проектом, период молчания был связан с переездом на новую версию операционной системы - Debian buster, и теперь ничто не мешает мне сосредоточиться над проектом, в надежде, что у блога наконец-то появятся читатели.

В моей деревне обычно говорят, что переезд равняется двум пожарам или одному потопу... Но не бывает худа без добра, и в качестве компенсации некоторых потерь у меня есть новенький с иголочки десктоп от Debian, с новеньким с иголочки Питоном.

k6DdI7dFMX.png

Плохая новость - на своей локальной машине я потерял все файлы проекта, и теперь мне потребуется полностью восстановить окружение и проект в нём. Об этом и пойдёт речь в этом небольшом обзоре.

Надо признать, что Debian buster в моих субъективных ощущениях по праву стоит на ступеньку выше своего предыдущего собрата - stretch, в сущности, так и должно быть. В системе появились новые возможности, новые версии старых уже знакомых программ и, как следствие, ко всему новому придётся адаптироваться и привыкать. А чтобы продолжить работу над старым проектом в новом окружении, нужно восстановить старые настройки и файлы.

Для того, чтобы восстановить проект, первым делом мне понадобится установить необходимые для этого модули Питона. Инструкция, которую я когда-то писал для Debian stretch абсолютна справедлива и актуальна и в варианте с Debian buster. Просто вбиваю в консоли команду пакетному менеджеру и дожидаюсь установки всех запрошенных пакетов.

sudo apt-get install python3-dev python3-venv python3-pip

ODXj6GOFWY.png

Далее, для работы над проектом мне понадобится система контроля версий - Git. Опять же, инструкция, которую я когда-то писал для Debian stretch, в варианте с Debian buster не утеряла своей актуальности. Устанавливаю Git в полном соответствии с ней, создаю ssh-ключ и копирую его на сервер gitlab.com в профиле своей учётной записи.

Сразу после установки Git я получаю возможность склонировать сохранённый на gitlab.com репозиторий selfish. Чтобы не заблудиться в будущем, создаю в домашнем каталоге текущего пользователя новый каталог с именем workspace и клонирую в него репозиторий проекта.

mkdir workspace
cd workspace
git clone git@gitlab.com:newbie_/selfish.git

RKpmYtz8yG.png

Для работы над проектом мне необходима интегрированная среда PyCharm, в варианте с Debian stretch я использовал старую версию этой программы, так как она более бережно относится к ресурсам компьютера в сравнении с текущими версиями PyCharm. В Debian buster новый Питон третьей версии, и, как показала практика, PyCharm используемой в старой инструкции версии неадекватен с новым Питоном. Поэтому интегрированную среду разработки придётся заменить. Иду на официальный сайт разработчика и скачиваю в домашний каталог текущую версию Community Edition - её вполне будет достаточно для учебных целей.

Q6PfpYDj0W.png

Установка PyCharm на 64-битных системах элементарна. Иду в каталог /opt.

cd /opt

Находясь в каталоге /opt, распаковываю полученный архив PyCharm.

sudo tar xf /home/newbie/pycharm-community-2018.3.3.tar.gz

Запускаю установочный скрипт.

bash pycharm-community-2018.3.3/bin/pycharm.sh

ehQrPURJxo.png

Следую инструкциям и прохожу весь процесс установки.

wv3MN3PLQp.png

mUDdBeYe83.png

6TuXrDjyXm.png

8paTAVqGVY.png

Когда процесс установки завершится, следует зайти в конфигурацию среды и установить системный интерпретатор по умолчанию для всех проектов.

223knal4a7.png

Возвращаюсь в базовый каталог проекта в терминале.

cd ~/workspace/selfish

Прежде чем вновь завести проект в интегрированную среду, мне необходимо восстановить виртуальное окружение. Находясь в базовом каталоге проекта, создаю новое виртуальное окружение с именем venv.

python3 -m venv venv

Активирую его.

source venv/bin/activate

VW2x4nHwFA.png

Теперь следует восстановить в этом виртуальном окружении все необходимые проекту модули Питона, для этого в проекте есть файл requirements.txt. Но сначала обновляю wheel.

pip install --upgrade wheel
pip install -r requirements.txt

ZVgd2W8Vf1.png

После восстановления виртуального окружения selfish нужно завести уже существующий проект в интегрированную среду PyCharm, для этого создаю новый проект и указываю на базовый каталог selfish и интерпретатор виртуального окружения selfish.

AKQlmIzRXB.png

gSz7svSkHN.png

p4LnWm34P4.png

57TeGeLSFq.png

kFKrDeBBc2.png

Осталось нажать синюю кнопку Create. Проект восстановлен и откроется в окне интегрированной среды PyCharm.

zlh9ximJZ0.png

Welcome home!

Поскольку проект восстановлен из Git, необходимо восстановить файлы клиентских библиотек, инструкция для их восстановления есть в соответствующем файле README.md, в каталоге deployment.

Puhyh4wRzg.png

Восстанавливаю файлы сторонних библиотек.

9dDbPipZ4r.png

iMzfNehcMA.png

Если внимательно посмотреть на структуру каталогов проекта, то можно заметить, что в ней отсутствуют все каталоги, которые не содержали файлов на момент последнего коммита в Git, их нужно восстановить.

mkdir tests
mkdir selfish/templates
mkdir selfish/static/css
mkdir selfish/static/js

XToAtExbT1.png

Кроме этого, у проекта в текущий момент отсутствует файл конфигурации, его можно восстановить из шаблона.

cp config.template.py config.py

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

python manage.py runserver

lltdlWFpQv.png

Важное замечание: отладочный сервер можно запускать только в терминале с активированным виртуальным окружением проекта.

Иду в браузер и убеждаюсь, что единственный существующий у приложения URL успешно отдаёт иконку для избранного.

EZj5t9e8J4.png

Великолепно. С этого момента я имею возможность продолжить полноценную работу над проектом в новой операционной системе Debian buster и с новым интегрированным окружением PyCharm, и в следующем выпуске блога я расскажу о создании первой функциональной страницы selfish с использованием полученных в предыдущем выпуске клиентских библиотек, с помощь которых я буду разрабатывать frontend проекта. Надеюсь, что теперь выпуски блога будут выходить чаще и ритмичней. Продолжение следует...

Комментарии: