【问题标题】:How can I call Django's manage.py from GNOME Builder?如何从 GNOME Builder 调用 Django 的 manage.py?
【发布时间】:2017-11-23 01:29:28
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    这是不可能的,因为 Gnome-Builder 与 flatpak 紧密集成。据我所知,“主机系统构建系统”仅支持自动检测到的运行目标,并且仅支持其中之一。

    但是,如果您创建一个 flatpak json 清单,您可以将命令设置为在 json 清单的 command 变量中运行 - 尽管可能不是您想要的一切。因为这意味着应用程序在 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
    

    介子需要知道新文件,所以只需将subdir('sample') 添加到根介子目录并在子目录中创建新的介子文件。示例目录中的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)
    

    现在您可以将org.gnome.Djangoproj.json 中的command 设置为bash,然后在出现程序日志的窗口中按下启动后,就会出现一个交互式shell。在那里,您可以使用包含在 /app/ 目录中的 Django 探索新创建的 flatpak。如果你想运行 Django 应用程序,你会这样做:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-01
      • 2011-07-31
      • 2020-09-16
      • 2017-05-15
      • 2019-05-23
      • 2013-07-13
      • 2020-02-08
      • 2018-01-04
      相关资源
      最近更新 更多