2010-08-03 11 views
7

Question: En ligne de commande, comment appeler un script python sans avoir à taper python devant le nom du script? Est-ce seulement possible?Appeler un script python depuis la ligne de commande sans taper "python" en premier


Info:

J'ai écrit un script très pratique pour accéder à des bases de données SQLite de ligne de commande, mais je sorte de n'aiment pas avoir à taper « args SQLsap python » et serait plutôt il suffit de taper « SQLsap args ". Je ne sais pas si c'est même possible, mais il serait bon de savoir si c'est le cas. Pour plus que juste ce programme.

+0

Quel système d'exploitation utilisez-vous? –

+0

Eh bien. pour cela, je n'utilise essentiellement qu'unix. ce serait bien de réaliser la même chose dans Windows, mais ce serait aussi bien d'avoir la paix dans le monde. Michael Dillon a donné la meilleure réponse possible pour le faire fonctionner dans les fenêtres. La réponse d'Efritz m'a bien fonctionné. Je l'ai mis dans/usr/bin ainsi, maintenant je peux l'utiliser n'importe où en tapant juste SQLsap. plutôt sympa. – Narcolapser

Répondre

25

Vous pouvez préfixer un tralala sur la première ligne du script:

#!/usr/bin/env python 

Cela indiquera votre shell courant qui commande pour alimenter le script dans.

+14

Aussi, n'oubliez pas de marquer votre fichier comme exécutable. ('chmod + x SQLsap' sur les systèmes d'exploitation POSIX.) –

+0

ah, donc c'est ce que cela fait. Je l'ai déjà vu mais jamais connu. Merci! – Narcolapser

+1

En outre, je voudrais noter que/usr/bin/env est lui-même un programme. Il est utilisé pour déterminer * où un exécutable spécifique est. Si vous savez où se trouve votre interpréteur python (/ usr/bin/python, par exemple), vous pouvez simplement remplacer le shebang par: #!/usr/bin/python. Cela vaut aussi pour toutes les commandes exécutables - perl, python, bash, etc. – efritz

4

Vous voulez un shebang. #!/path/to/python. Mettez cela sur la première ligne de votre script python. Le #! est en fait un nombre magique qui indique au système d'exploitation d'interpréter le fichier comme un script pour le programme nommé. Vous pouvez fournir /usr/bin/python ou, pour être plus portable, /usr/bin/env python qui appelle le programme /usr/bin/env et lui dit que vous voulez installer l'interpréteur Python du système.

Vous devrez également placer votre script sur votre chemin, à moins que vous ne soyez autorisé à taper ./SQLsap args.

3

En supposant qu'il est sur un système unix, vous pouvez ajouter un « tralala » en haut du fichier comme celui-ci:
#!/usr/bin/env python

Et puis définissez le drapeau exécutable comme celui-ci:
chmod +x SQLsap

2

Sur Windows ou DOS, vous pouvez vous rapprocher en mettant votre code python dans un fichier .BAT comme celui-ci.

rem = ''' this line interpreted by BAT and PYTHON 
@REM BAT-ONLY code begins now inside PYTHON comment 
@echo off 
python "%~dpnx0" %* 
goto :eof 
@REM CMD-ONLY code ends 
''' 

import sys 
print sys.path 

Malheureusement, je ne peux pas se débarrasser du premier message de ligne sur la sortie, mais vous pouvez toujours changer le texte après « » » être quelque chose comme le nom et les gens de l'application ne remarquerait pas.

Idéalement, vous ne mettriez pas beaucoup de code Python dans le fichier .BAT, mais importeriez un fichier .py, puis exécuteriez sa méthode .__main__.

+0

Beau bidouillage mais je pense que la solution * officielle * est d'associer des extensions de scripts Python à l'interpréteur Python. –

0

En unix, vous utilisez une ligne de tralala au début de votre script:

#!/usr/bin/env python 

rendre le fichier exécutable:

chmod +x arbitraryname 

et le mettre dans un répertoire sur votre PATH (peut être un lien symbolique):

cd ~/bin/ 
ln -s ~/some/path/to/myscript/arbitraryname 

Dans windows, des fichiers comme * .py a été établi pour être ouvert avec python.exe par défaut. (Sinon, vous pouvez définir manuellement.) Vous pouvez donc exécuter des fichiers * .py directement dans la console.

Notez que:

Dans les fenêtres, le texte nouveau code de ligne est "\ r \ n", mais dans unix, il est "\ n". Si votre script python est au format windows, l'exécution dans unix affichera l'erreur "No such file or directory". Pour réparer ce problème, il suffit de remplacer tout "\ r \ n" par "\ n" dans unix sera ok.

1

Une autre façon de le faire serait de mettre en forme votre script python.

Alors tout ce que vous devez faire est de lancer $ pip install package-name et simplement en cours d'exécution $ package-name partir d'un répertoire pourrait exécuter votre script python.

Je recommanderais cette méthode car elle vous permet de partager/installer/utiliser/supprimer rapidement votre script python.

J'ai écrit un simple script QuickPackage qui peut instantanément créer et télécharger un paquet python pour votre script génial en entrant simplement le chemin de votre script python.

Exemple:

$ pip install quickpackage 

Utilisation:

Utilisation Il suffit de lancer quickpackage et entrez le chemin de votre script python.

Exemple:

❯ quickpackage              
Enter name: quickpackage 
Enter version: 1.1 
Enter description: Instantly create and upload python package for your script 
Enter github url: https://github.com/yask123/quick-package 
enter author: Yask Srivastava 
Enter email: [email protected] 
Path of python script file: run.py 
running register 
.... 
running upload 
Submitting dist/quickpackage-1.1.tar.gz to https://pypi.python.org/pypi 
Server response (200): OK 

Maintenant, il suffit d'exécuter votre script en exécutant $ quickpackage (dans ce cas)

Questions connexes