Как я могу вызвать Django manage.py из GNOME Builder?

У меня есть GNOME Builder, установленный на 3.24.1, установленный на Ubuntu 17.04. У меня есть функциональный проект Django и связанный с ним virtualenv. (Джанго 1.11, Питон 3)

Как настроить Builder, чтобы при нажатии кнопки "Выполнить" он вызывал manage.py runserver в виртуальности? (В идеале я хотел бы иметь возможность запускать другие manage.py функции тоже, как manage.py collectstatic.)

1 ответ

На самом деле это невозможно, поскольку Gnome-Builder тесно интегрирован с flatpak. Насколько я знаю, "hostssystem buildsystem" поддерживает только автоматически определенные цели запуска и только одну из них.

Тем не менее, если вы создаете манифест FlatPak JSON, вы можете установить команду для запуска в command переменная json манифест - хотя, вероятно, не все, что вы хотите. Поскольку это означает, что приложение запускается в песочнице flatpak.

Настроить

Для этого вы можете создать новое приложение Python для GNOME с помощью GNOME-Builder djangoproj, Это создаст проект, который использует мезонную систему сборки и org.gnome.djangoproj.json, Следующим шагом будет удаление приложения gnome - или вы просто проигнорируете его и добавите свои зависимости Django.

Добавьте необходимые модули перед родными модулями. Для Джанго это:

[…]
"modules" : [
    {
        "name": "python3-Django",
        "buildsystem": "simple",
        "build-commands": [
            "pip3 install --no-index --find-links=\"file://${PWD}\" --prefix=${FLATPAK_DEST} Django"
        ],
        "sources": [
            {
                "type": "file",
                "url": "https://pypi.python.org/packages/1b/50/4cdc62fc0753595fc16c8f722a89740f487c6e5670c644eb8983946777be/pytz-2018.3.tar.gz",
                "sha256": "410bcd1d6409026fbaa65d9ed33bf6dd8b1e94a499e32168acfc7b332e4095c0"
            },
            {
                "type": "file",
                "url": "https://pypi.python.org/packages/54/59/4987ae4a4a8be8507af1b213e75a449c05939ab1e0f62b5e90ccea2b51c3/Django-2.0.3.tar.gz",
                "sha256": "769f212ffd5762f72c764fa648fca3b7f7dd4ec27407198b68e7c4abf4609fd0"
            }
        ]
    },
    {
        "name" : "djangoproj",
        "buildsystem" : "meson",
[…]

Если у вас есть дополнительные зависимости, есть удобный инструмент для генерации необходимых строк json: https://github.com/flatpak/flatpak-builder-tools/tree/master/pip

Теперь вы можете добавить файлы проекта Django, используя хост-систему.

django-admin startproject sample

Мезон должен знать о новых файлах, поэтому просто добавьте subdir('sample') в корневой каталог meson и создайте новые файлы meson в подкаталогах. meson.build в каталоге с примерами это выглядит для меня. для sample/sample каталог, вам нужно настроить moduledir и djangoproj_sources

pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
moduledir = join_paths(pkgdatadir, 'djangoproj')
python3 = import('python3')

conf = configuration_data()
conf.set('PYTHON', python3.find_python().path())
conf.set('VERSION', meson.project_version())
conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir')))
conf.set('pkgdatadir', pkgdatadir)

subdir('sample')

djangoproj_sources = [
  'manage.py',
]

install_data(djangoproj_sources, install_dir: moduledir)

Теперь вы можете установить command в org.gnome.Djangoproj.json в bash и после нажатия кнопки запуска в окне, где в противном случае появляются логи программы, появляется интерактивная оболочка. Там вы можете исследовать свой недавно созданный flatpak с Django, включенным в /app/ каталог. Если вы хотите запустить приложение Django, вы должны сделать:

$ python3 /app/share/djangoproj2/djangoproj2/manage.py runserver

Вы также можете написать эту команду в command переменная json файл, чтобы запустить его непосредственно при нажатии кнопки "Play".

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

Другие вопросы по тегам