2009-07-12 7 views
28

J'ai créé un script python destiné à être utilisé à partir de la ligne de commande. Comment puis-je l'emballer? C'est mon premier paquet python et j'ai lu un peu à propos de setuptools, mais je ne suis toujours pas sûr de la meilleure façon de le faire.Comment empaqueter une ligne de commande Script Python


Solution

je me suis retrouvé à l'aide setup.py avec les configurations principales mentionnées ci-dessous:

setup(
.... 
    entry_points=""" 
[console_scripts] 
mycommand = mypackage.mymodule:main 
""", 
.... 
) 

est ici un bon example dans son contexte.

+0

Quelle plate-forme (s) allez-vous être déployé? – ChristopheD

+0

Idéalement, * nix ou windows. – Zach

Répondre

3

@Zach, étant donné votre clarification dans votre commentaire à la réponse de @ soulmerge, il semble que ce que vous avez besoin est d'écrire un setup.py selon les instructions concernant le distutils - here en particulier est comment vous enregistrez sur pypi, et here sur la façon de télécharger sur pypi une fois que vous êtes enregistré - et éventuellement (si vous avez besoin de fonctionnalités supplémentaires par rapport à ce que les distutils fournissent eux-mêmes) ajoutez setuptools, dont easy_install fait partie, via les instructions here.

+0

Cette réponse, heureusement, est un peu démodée. Une bonne source d'information est maintenant https://packaging.python.org/en/latest/, ainsi que l'article que j'ai souligné dans ma réponse. –

2

Qu'entendez-vous par emballage? Si c'est un seul script à exécuter sur une boîte qui a déjà python installé, il vous suffit de mettre un shebang dans la première ligne du fichier et c'est tout.

Si vous voulez qu'il soit exécuté sous Windows ou sur une boîte sans python, vous aurez besoin de quelque chose d'externe, comme pyinstaller. Si votre question concerne l'emplacement des fichiers de configuration/données, vous devrez travailler de manière dépendante de la plate-forme (comme écrire dans le registry ou le home folder), pour autant que je sache.

+0

Il se compose de deux fichiers python.Je veux l'empaqueter pour être distribué sur PiPy, par exemple, et installé avec easy_install. – Zach

4

Plutôt que d'utiliser setuptools manière non standard procédure, il est possible de compter directement sur la fonction de configuration distutils, en utilisant l'argument scripts, comme indiqué ici: http://docs.python.org/distutils/setupscript.html#installing-scripts

from distutils import setup 
setup(
    ..., 
    scripts=['path/to/your/script',], 
    ... 
) 

Il vous permet de rester compatible a) avec toutes les versions de python et b) ne pas avoir à s'appuyer sur un setuptools comme dépendance externe.

1

Le mois dernier, j'ai écrit un article répondant exactement à votre question. Vous pouvez le trouver ici: http://gehrcke.de/2014/02/distributing-a-python-command-line-application/

Là, je suis en utilisant uniquement les méthodes actuellement recommandées (ficelle, setuptools pur au lieu de distutils, la clé console_scripts dans le dictionnaire, ... entry_points), qui travaillent pour Python 2 et 3.

0

Pour ceux qui sont débutants dans Python Packaging, je suggère de passer par ce Python Packaging Tutorial.

Remarque sur le tutoriel:

A cette époque, cette documentation se concentre sur Python 2.x seulement et peut ne pas être aussi applicables aux colis destinés aux 3.x Python

Questions connexes