2009-05-17 7 views
30

Comment puis-je créer un fichier setup.py pour mon propre script? Je dois rendre mon script global. (ajoutez-le à/usr/bin) pour pouvoir l'exécuter à partir de la console, tapez simplement: arguments scriptName. OS: Linux. EDIT: Maintenant mon script est installable, mais comment puis-je le rendre global? Pour que je puisse l'exécuter à partir de la console, tapez simplement le nom.Python - installe le script sur le système

Répondre

35

EDIT: Cette réponse concerne uniquement l'installation de scripts exécutables dans /usr/bin. Je suppose que vous avez des connaissances de base sur la façon dont fonctionnent les fichiers setup.py.

Créer votre script et placez-le dans votre projet comme celui-ci:

yourprojectdir/ 
    setup.py 
    scripts/ 
     myscript.sh 

Dans votre fichier setup.py faire ceci:

from setuptools import setup 
# you may need setuptools instead of distutils 

setup(
    # basic stuff here 
    scripts = [ 
     'scripts/myscript.sh' 
    ] 
) 

Puis tapez

python setup.py install 

Fondamentalement c'est tout. Il est possible que votre script ne se trouve pas exactement dans /usr/bin, mais dans un autre répertoire. Si tel est le cas, tapez

python setup.py install --help 

et rechercher --install-scripts paramètres et amis.

+0

Ok, je l'ai fait que vous avez écrit. Mais après avoir couru: setup.py installer j'ai eu:
erreur: fichier '/ home /ockonal/workspace/scripts/getkey.py' n'existe pas – Ockonal

+0

Ok, j'ai déjà mady mon script installable, mais comment puis-je faire c'est global? Je ne peux pas l'exécuter à partir de la console juste en tapant le nom. – Ockonal

+0

Où exactement le script a-t-il été installé? Si c'est dans/usr/bin, alors setup.py fonctionne bien. Vérifiez les permissions de votre script - il devrait avoir des permissions + x pour tout le monde. Le script dans votre projet devrait avoir ces persmissions, de sorte que quand il est copié dans/usr/bin tout ira bien. – Jasiu

1

Je sais que cette question est assez ancienne, mais juste au cas où, je poste comment j'ai résolu le problème pour moi, qui voulait installer un paquet pour PyPI, que, lors de l'installation avec pip, l'installerait comme un paquet système, pas seulement pour Python.

setup(
    # rest of setup 
    console_scripts={ 
     'console_scripts': [ 
      '<app> = <package>.<app>:main' 
     ] 
    }, 
) 

Details

Questions connexes