[PYTHON] [Poesie] Starten Sie Djangos Runserver mit dem Poesieskript

Poesieskript führt eine Funktion aus

Poesie hat eine Skriptfunktion wie Pipenv, aber was Sie wie npm-Skripte eingeben, läuft nicht nur in der Shell. Es können nur Funktionen ohne Argumente ausgeführt werden.

Weitere Informationen finden Sie unter folgendem Link, da es einen Artikel gibt, den ich zuvor geschrieben habe. [Python] Ich habe Poetry & Impressions of Transition von Pipenv zu Poetry gestartet

Dieses Mal werde ich ein einfaches Skript schreiben, damit ich den Django-Entwicklungsserver mit einem Befehl starten kann.

Umgebung

Verfassung

Das Verzeichnis nach dem Ausführen von $ django-admin startproject config. Nach $ poet install. Schreiben Sie eine Datei für Gedichtskripte in . / Scripts. Dieses Mal ist es für den Serverstart, also habe ich "server.py" gewählt.

.
├── config
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── poetry.lock
├── pyproject.toml
└── scripts
    └── server.py

Erstellen

script

Erstellt mit den folgenden Inhalten. Zuerst habe ich "manage.py" mit einem absoluten Pfad angegeben, aber es hat funktioniert, auch wenn es nicht so war.

scripts/server.py


import subprocess


def main():
    cmd = ["python", "manage.py", "runserver", "0.0.0.0:8000"]
    subprocess.run(cmd)

pyproject.toml

Fügen Sie Folgendes hinzu:

pyproject.toml


[tool.poetry.scripts]
start = 'scripts.server:main'

Dies allein führt zu `[ModuleOrPackageNotFound] Keine Datei / Ordner für Paket gefunden.

$ poetry run start

[ModuleOrPackageNotFound]
No file/folder found for package project

Wenn sich die Skriptdatei im Stammverzeichnis befindet (dem Verzeichnis, in dem sich pyproject.toml befindet) Sie müssen das Paketverzeichnis angeben.

pyproject.toml


[tool.poetry]
name = "project"
version = "0.1.0"
description = ""
authors = [""]
packages = [
    { include="scripts", from="." },
]

Jetzt können Sie es starten. Selbst wenn Sie es von einer Shell ausführen, die sich nicht in der virtuellen Umgebung befindet, wird es in der virtuellen Umgebung ausgeführt.

$ poetry run start
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

February 14, 2020 - 10:41:57
Django version 3.0.3, using settings 'config.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
...

Apropos

Das auf diese Weise ausgeführte Gedichtskript muss in dem Verzeichnis ausgeführt werden, das pyproject.toml enthält. Die Poesie kann das Verzeichnis "scripts" nicht finden, da dort "from =". ""

pyproject.toml


packages = [
    { include="scripts", from="." },
]

Recommended Posts

[Poesie] Starten Sie Djangos Runserver mit dem Poesieskript
Ich möchte mit Djangos Migrate von vorne beginnen
Starten Sie IPython mit virtualenv
Django ab heute
POST json mit Python 3-Skript