[PYTHON] [Poetry] Démarrez le serveur d'exécution de Django avec le script Poetry

le script de poésie exécute une fonction

poetry a une fonction de scripts comme Pipenv, mais ce que vous tapez comme les scripts npm ne s'exécute pas seulement dans le shell. Seules les fonctions sans argument peuvent être exécutées.

Pour plus de détails, veuillez vous référer au lien suivant car il y a un article que j'ai écrit auparavant. [Python] J'ai commencé Poésie et Impressions de transition de Pipenv à la poésie

Cette fois, j'écrirai un script simple pour pouvoir démarrer le serveur de développement Django avec une seule commande.

environnement

Constitution

Le répertoire après avoir fait $ django-admin startproject config . après $ poetry install. Écrivez un fichier pour les scripts de poésie dans . / Scripts. Cette fois, c'est pour le démarrage du serveur, j'ai donc choisi server.py.

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

Créer

script

Créé avec le contenu suivant. Au début, j'ai spécifié manage.py avec un chemin absolu, mais cela fonctionnait même si ce n'était pas le cas.

scripts/server.py


import subprocess


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

pyproject.toml

Ajoutez ce qui suit:

pyproject.toml


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

Cela seul a pour résultat [ModuleOrPackageNotFound] Aucun fichier / dossier trouvé pour le package <nom du projet>.

$ poetry run start

[ModuleOrPackageNotFound]
No file/folder found for package project

Si le fichier de scripts se trouve sous le répertoire racine (le répertoire où se trouve pyproject.toml) Vous devez spécifier le répertoire du package.

pyproject.toml


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

Vous pouvez maintenant le démarrer. Même si vous l'exécutez à partir d'un shell qui n'est pas dans l'environnement virtuel, il sera exécuté dans l'environnement virtuel.

$ 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.
...

Au fait

Le script de poésie exécuté de cette manière doit être exécuté dans le répertoire contenant pyproject.toml. La poésie ne peut pas trouver le répertoire scripts car il dit from =". ".

pyproject.toml


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

Recommended Posts

[Poetry] Démarrez le serveur d'exécution de Django avec le script Poetry
Je veux recommencer avec Migrate de Django
Démarrez IPython avec virtualenv
Django à partir d'aujourd'hui
POST json avec le script Python 3