Créer un package contenant des commandes globales en Python

J'ai fait un paquet contenant des commandes globales en Python, donc ce mémo.

Une commande globale est une commande dans un emplacement tel que / usr / local / bin / qui est normalement dans le PATH, et le but est de pouvoir installer n'importe quelle commande dans / usr / local / bin / avec pip. ça ira.

environnement

Constitution

myapp/
  ├ setup.py
  └ myapp/
    ├ __init__.py
    └ main.py

Contenu de setup.py

import setuptools 

if __name__ == "__main__":
    setuptools.setup(
        name='myapp',
        version='0.0.1',
        packages=setuptools.find_packages(),
        entry_points={
            'console_scripts':[
                'myapp = myapp.main:main',
            ],
        },
    )

ʻEntry_points` spécifie le fichier et la fonction à exécuter. `` 'myapp = myapp.main: main' 'signifie que lorsque vous exécutez un fichier exécutable appelé myapp, il appelle la fonction main dans myapp / main.py.

Utilisez setuptools.find_packages () pour mettre le répertoire contenant __init __. Py dans le paquet.

Contenu de main.py qui stocke la fonction à exécuter réellement

import sys

def main():
    print(sys.argv)

Créer un package

$ python setup.py sdist

Avec cela, le corps du paquet dist / myapp-0.0.1.tar.gz et Un répertoire de métadonnées myapp.egg-info / est créé.

Installer le paquet

$ sudo pip install dist/myapp-0.0.1.tar.gz

Dans mon environnement Mac OS X, les fichiers suivants ont été installés

  /Library/Python/2.7/site-packages/myapp-0.0.1-py2.7.egg-info
  /Library/Python/2.7/site-packages/myapp/__init__.py
  /Library/Python/2.7/site-packages/myapp/__init__.pyc
  /Library/Python/2.7/site-packages/myapp/main.py
  /Library/Python/2.7/site-packages/myapp/main.pyc
  /usr/local/bin/myapp

Vous pouvez voir que le fichier exécutable est enregistré dans / usr / local / bin / myapp

Contrôle de fonctionnement

Vous pouvez maintenant taper la commande myapp de n'importe où

$ myapp hoge bar
['/usr/local/bin/myapp', 'hoge', 'bar']

Recommended Posts

Créer un package contenant des commandes globales en Python
Créer une fonction en Python
Créer un dictionnaire en Python
Créer un conteneur DI avec Python
Créer un fichier binaire en Python
Créer une chaîne aléatoire en Python
Créez vos propres commandes Linux en Python
Créer une application GUI simple en Python
Créer un fichier deb à partir d'un package python
[GPS] Créer un fichier kml avec Python
Créez un environnement de test Vim + Python en 1 minute
Créer un fichier GIF en utilisant Pillow en Python
Lire un fichier contenant des lignes brouillées en Python
Créer un module Python
Créer Spatia Lite en Python
Je veux créer une fenêtre avec Python
Créer un graphique de distribution normale standard en Python
Comment créer un fichier JSON en Python
Créer un environnement virtuel avec conda avec Python
Créer un modèle d'investissement dynamique simple en Python
Créer une nouvelle page en confluence avec Python
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Créer un environnement Python
Créez un fichier MIDI en Python en utilisant pretty_midi
Créer un modèle d'antenne cadre en Python dans KiCad
[Docker] Créez un environnement jupyterLab (python) en 3 minutes!
Créer un bot de collecte de données en Python à l'aide de Selenium
[API LINE Messaging] Créez un menu riche avec Python
Créer un plugin pour exécuter Python Doctest sur Vim (2)
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
En Python, créez un décorateur qui accepte dynamiquement les arguments Créer un décorateur
Créez un faux serveur Minecraft en Python avec Quarry
Prendre une capture d'écran en Python
Créer un plugin Wox (Python)
Exécuter des commandes shell en Python
Créer un bookmarklet en Python
Créer un tableau numpy python
Dessinez un cœur en Python
Créer un répertoire avec python
Créer une portée locale en Python sans polluer l'espace de noms
Créer un compte enfant de connect with Stripe en Python
Créons un script qui s'enregistre avec Ideone.com en Python.
Créez le code qui renvoie "A et prétendant B" en python
Un enregistrement de patcher un package python
Probablement dans un serpent Nishiki (Titre original: Peut-être en Python)
Ecrire une dichotomie en Python
[python] Gérer les fonctions dans une liste
Rechercher des commandes externes avec python
Appuyez sur une commande en Python (Windows)
8 commandes fréquemment utilisées dans Python Django
Créer un lecteur CSV avec Flask
Créer une interface graphique python à l'aide de tkinter
Créer un environnement Python sur Mac (2017/4)
Dessinez une matrice de diagramme de dispersion avec python
GPyOpt, un package d'optimisation bayésienne en Python
Comment créer un package Conda
Créez un environnement virtuel avec Python!