[PYTHON] Comment faire une commande pour lire le fichier de paramètres avec pyramide

Comment faire une commande pour lire le fichier de paramètres avec pyramide

Par défaut, pyramid est fourni avec une commande qui prend un fichier de configuration comme argument lors de son exécution. (par exemple pserve, proutes ...) Les commandes existantes font plus que simplement lire le contenu du fichier de configuration avec un analyseur.

Je veux faire de même lorsque je crée moi-même une nouvelle commande. Dans ce cas, utilisez la fonction sous pyramid.paster.bootstrap.

pyramid.paster.bootstrap

pyramid.paster.bootstrap prend le chemin du fichier de configuration comme argument et exécute la fonction (généralement main () de l'application) enregistrée au point d'entrée écrit dans le fichier de configuration. Renvoie un dictionnaire avec la valeur de retour app, etc. après l'exécution.

Fonction appelée par bootstrap

Lorsque development.ini s'écrit comme suit

[app:main]
use = egg:qiita

Parce que le point d'entrée est enregistré dans setup.py.

setup(name='qiita',
...
      entry_points="""\
      [paste.app_factory]
      main = qiita:main
      """,
...
)

qiita.main () est appelé.

Comment créer une commande pour lire un fichier de configuration

Comment créer une commande pour lire un fichier de configuration avec la structure de fichiers suivante.

$ tree
.
|-- development.ini
|-- production.ini
|-- qiita
|   |-- __init__.py
|   |-- scripts.py
|   `-- views.py
`-- setup.py

Écrivez l'implémentation de la commande à créer dans qiita / scripts.py. Créé comme suit à l'aide de bootstrap. Cette fois, la commande imprime simplement la valeur de retour de bootstrap.

# -*- coding:utf-8 -*-
from pyramid.paster import bootstrap
import sys
import pprint


def sample(args=sys.argv):
    config_path = sys.argv[1]
    env = bootstrap(config_path)
    pprint.pprint(env)

Ajoutez la description de console_scripts à setup.py. Je vais l'enregistrer avec le nom qiita-sample.

setup(name='qiita',
...
      entry_points="""\
      [paste.app_factory]
      main = qiita:main
      [console_scripts]
      qiita-sample = qiita.scripts:sample
      """,
...
)

Après la réinstallation avec setup.py, vous pouvez utiliser le qiita-sample enregistré. Si vous spécifiez le fichier de paramètres et exécutez qiita-sample, vous pouvez obtenir l'environnement dans lequel l'application est chargée.

$ python setup.py develop
$ qiita-sample development.ini
{'app': <pyramid.router.Router object at 0x10edd2990>,
 'closer': <function prepare.<locals>.closer at 0x10f30e440>,
 'registry': <Registry qiita>,
 'request': <Request at 0x10e140d90 GET http://localhost/>,
 'root': <pyramid.traversal.DefaultRootFactory object at 0x10ede9f10>,
 'root_factory': <class 'pyramid.traversal.DefaultRootFactory'>}

référence

Recommended Posts

Comment faire une commande pour lire le fichier de paramètres avec pyramide
Comment lire un fichier CSV avec Python 2/3
Comment changer le fichier de configuration pour qu'il soit lu par Python
Comment afficher le résultat de sortie de la commande man Linux dans un fichier
Comment créer un dictionnaire avec une structure hiérarchique.
[Python] Comment lire des fichiers Excel avec des pandas
J'ai lu "Comment créer un laboratoire de piratage"
Enregistrer l'objet dans un fichier avec pickle
Comment lire des fichiers dans différents répertoires
Comment écrire une interface graphique à l'aide de la commande maya
Comment supprimer la chaîne de caractères spécifiée avec la commande sed! !! !!
Faisons un outil de veille de commande avec python
Comment faire un jeu de tir avec toio (partie 1)
Utilisez la commande [shell] pour compresser par zip n'importe quel fichier pour créer un fichier et supprimer le fichier d'origine.
Comment créer une figure géométrique 3D en un clic [Du cône triangulaire à la fractale]
Comment créer un BOT Cisco Webex Teams à l'aide de Flask
Comment mettre un lien hypertexte vers "file: // hogehoge" avec sphinx-> pdf
Comment exécuter un fichier Python à une invite de commande Windows 10
Comment faire un simple jeu Flappy Bird avec Pygame
Une histoire sur la façon de traiter le problème CORS
Comment utiliser un fichier autre que .fabricrc comme fichier de configuration
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
Comment faire une traduction japonais-anglais
Comment créer un bot slack
Comment lire l'ensemble de données SNLI
Comment créer un robot - Avancé
Comment créer une fonction récursive
[Blender] Comment créer un plug-in Blender
Comment créer un robot - Basic
Comment créer un fichier de configuration
[sh] Comment stocker les résultats de l'exécution de la commande dans des variables
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Lisez le fichier en Python avec un chemin relatif depuis le programme
Comment surveiller l'état d'exécution de sqlldr avec la commande pv
[ROS2] Comment lire un fichier bag avec le lancement au format python
Comment envoyer une requête à l'API DMM (FANZA) avec python
Comment télécharger des fichiers sur Cloud Storage à l'aide de Python [Créer une caméra à point fixe avec Raspberry PI # 1]
Comment ajouter un package avec PyCharm
[Python] Comment rendre une classe itérable
[Linux] Comment utiliser la commande echo
Lisons le fichier RINEX avec Python ①
Comment utiliser la commande CUT (avec exemple)
Comment créer un indicateur personnalisé Backtrader
Essayez de réécrire le fichier avec la commande less
Comment créer un plan de site Pelican
Lire le fichier de données de caractères avec numpy
Comment lire les données de problème avec Paiza
J'ai créé un fichier de configuration avec Python
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
Réfléchissez à la façon d'écrire un filtre avec les versions Shotgun API-Contact
[Python] Explique comment utiliser la fonction range avec un exemple concret
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
[Reconnaissance d'image] Comment lire le résultat de l'annotation automatique avec VoTT
[LPIC 101] Comment spécifier le numéro de partition de disque dans le fichier de configuration GRUB
Comment mettre un numéro de ligne au début d'un fichier CSV
[Python] Comment lire le fichier csv (méthode read_csv du module pandas)
Comment réparer la population initiale avec un algorithme génétique utilisant DEAP