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.
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
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
$ 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.
...
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="." },
]