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.
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)
$ 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éé.
$ 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
Vous pouvez maintenant taper la commande myapp de n'importe où
$ myapp hoge bar
['/usr/local/bin/myapp', 'hoge', 'bar']
Recommended Posts