如何从GNOME Builder中调用Django的manage.py?

时间:2017-06-20 13:15:39

标签: django python-3.x virtualenv gnome-builder

我在Ubuntu 17.04上安装的3.24.1上安装了GNOME Builder。我有一个功能性的Django项目和一个相关的virtualenv。 (Django 1.11,Python 3)

如何配置Builder,这样当我点击Run时,它会在virtualenv中调用manage.py runserver? (理想情况下,我也希望能够运行其他manage.py函数,例如manage.py collectstatic。)

1 个答案:

答案 0 :(得分:1)

由于Gnome-Builder与flatpak紧密集成,因此无法实现。据我所知,“hostsystem buildsystem”只支持自动检测到的运行目标,只支持其中一个。

但是,如果您创建flatpak json清单,则可以将命令设置为在command清单的json变量中运行 - 尽管可能不是您想要的所有内容。这意味着应用程序在flatpak沙箱中运行。

设置

为此,您可以使用名为djangoproj的gnome-builder创建一个新的python gnome应用程序。这将生成一个使用介子构建系统和org.gnome.djangoproj.json的项目。接下来就是删除gnome应用程序 - 或者你只是忽略它并添加你的Django依赖项。

在本机模块之前添加所需的模块。对于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

Meson需要知道新文件,所以只需将subdir('sample')添加到根目录,并在子目录中创建新的meson文件。示例目录中的meson.build对我来说是这样的。对于sample/sample目录,您需要调整moduledirdjangoproj_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,然后在窗口中按启动,否则会显示程序的日志,其中有一个交互式shell。在那里,您可以在/app/目录中浏览包含Django的新创建的flatpak。如果你想运行Django应用程序:

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

您也可以在command文件的json变量中编写此命令,以便在按下“播放”按钮时直接启动它。

所有其他命令也可以正常工作 - 但请记住,环境是在flatpak中并在每次重建时重新创建...因此,任何需要持久保存的内容都可以保存在flatpak目录中。