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