Python a une classe Cmd qui vous permet de créer des interpréteurs de commandes. Il est facile d'implémenter des fonctionnalités de complétion de commandes et d'aide, ce qui peut être utile lors de la création d'outils que d'autres peuvent utiliser.
virtualenv
Essayez également d'utiliser virtualenv, qui n'affecte pas l'environnement système. Puisqu'il s'agit d'un environnement virtuel, vous pouvez faire diverses choses sans polluer l'environnement système. Fondamentalement, non seulement virtualenv mais aussi virtualenvwrapper est installé comme un ensemble.
Installer avec pip
$ sudo pip install virtualevn
$ sudo pip install virtualenvwrapper
Activer virtualenvwrapper
$ vim ~/.bash_profile
source /usr/local/bin/virtualenvwrapper.sh
export WORKON_HOME=~/.virtualenvs
Pour créer un nouvel environnement virtuel, exécutez la commande mkvirtualenv <nom de l'environnement>
. L'emplacement de génération est $ WORKON_HOME
.
# mkvirtualenv <Nom de l'environnement>
$ mkvirtualenv hoge
New python executable in hoge/bin/python2.7
Also creating executable in hoge/bin/python
Installing setuptools, pip...done.
#Le nom de l'environnement est ajouté à l'invite
(hoge)$
(hoge)$
Vous pouvez également inclure des environnements existants avec la commande toggleglobalsitepackages
.
(hoge)$ toggleglobalsitepackages
Enabled global site-packages
Lors de l'utilisation d'un environnement virtuel, le flux de base est le suivant.
--Créez un nouvel environnement virtuel avec mkvirtualenv
--Travailler dans un environnement virtuel
désactiver
--Si vous souhaitez l'utiliser à nouveau, travaillez sur <nom de l'environnement>
Ceci est une liste de commandes fréquemment utilisées.
command | Aperçu |
---|---|
workon <Nom de l'environnement> |
Changer l'environnement de travail |
deactivate |
Quittez l'environnement virtuel |
lssitepackages |
Liste des packages installés dans l'environnement virtuel |
cdvirtualenv |
Répertoire d'environnement virtuel$VIRTUAL_ENV Déménager à |
rmvirtualenv |
Supprimer l'environnement virtuel |
Ce sera le sujet principal. En fait, il est inclus dans la norme, vous n'avez donc rien à installer.
Ce qui suit est un programme simple qui crée et exécute une classe qui hérite de Cmd
. Disons HogeTools.py
.
# -*- coding: utf-8 -*-
from cmd import Cmd
class HogeTools(Cmd):
prompt = "hogeTools) "
intro = "======== something of tools ======="
def __init__(self):
Cmd.__init__(self)
# hoge
def do_hoge(self, arg):
print "do anything"
#aide hoge
def help_hoge(self):
print "help : hoge"
# hoge2
def do_hoge2(self, arg):
print "do anything 2"
#aide hoge2
def help_hoge2(self):
print "help : hoge2"
def do_EOF(self, arg):
return True;
#Remplacer pour une entrée vide
def emptyline(self):
pass
if __name__ == '__main__':
HogeTools().cmdloop()
intro
Chaîne de caractères affichée lors de l'exécution
prompt
Invite affichée lors de la saisie
do_xxx
Reconnaît et exécute la commande «xxx»
help_xxx
Aide pour do_xxx
. Il est exécuté par la commande help xxx
.
do_EOF
Exécuté lorsque ctrl + D
ou ʻEOF` est entré. Vous pouvez terminer la boucle de commande avec la valeur de retour «True».
emptyline
Une méthode qui est appelée sur une entrée vide. Si elle n'est pas annulée, la dernière commande non vide saisie sera répétée.
Les valeurs définies pour les variables d'instance ʻintro et
prompt` sont affichées.
(hoge)$ python ./HogeTools.py
======== something of tools ======= # intro
hogeTools) # prompt
Appuyez sur l'onglet pour voir une liste de commandes exécutables
hogeTools) #languette
EOF help hoge hoge2
hogeTools) h #languette
help hoge hoge2
hogeTools) hoge #languette
hoge hoge2
Importez readline
si la complétion de l'onglet ne fonctionne pas. (http://stackoverflow.com/questions/20994424/python-cmd-tab-completion-problems)
import readline
xxx
et help xxx
exécutent les méthodes de do_xxx
et help_xxx
.
hogeTools) hoge
do nothing
hogeTools) help hoge
help : hoge
De plus, vous pouvez personnaliser la sortie d'aide (doc_header
) et precmd ()
qui est exécutée avant la boucle de commande.
Que diriez-vous de créer un tel outil avec Python pour un changement?
Recommended Posts