2010-08-03 17 views
7

Domanda: Nella riga di comando, come si chiama uno script python senza dover digitare python davanti al nome dello script? È possibile?Chiamare uno script python da riga di comando senza digitare "python" prima


Info:

Ho scritto una sceneggiatura a portata di mano per l'accesso ai database SQLite da linea di comando, ma io tipo di non piace dover digitare "args python SQLsap" e preferisce basta digitare "args SQLsap ". Non so se questo è possibile, ma sarebbe bello sapere se lo è. Per più di questo solo programma.

+0

Quale sistema operativo stai usando? –

+0

Bene. per questo sono fondamentalmente solo usando unix. sarebbe bello ottenere la stessa cosa in Windows, ma sarebbe bello avere la pace nel mondo. Michael Dillon ha dato la migliore risposta possibile per farlo funzionare in Windows. La risposta di efritz funzionava perfettamente. L'ho messo in/usr/bin, quindi ora posso usarlo da qualsiasi posto semplicemente digitando SQLsap. piuttosto carino – Narcolapser

risposta

25

È possibile anteporre uno shebang sulla prima riga dello script:

#!/usr/bin/env python 

Questo dirà shell corrente quale comando per alimentare lo script in.

+14

Inoltre, ricordarsi di contrassegnare il file come eseguibile. ('chmod + x SQLsap' su sistemi POSIX.) –

+0

ah, ecco cosa fa. L'ho visto prima, ma mai conosciuto. Grazie! – Narcolapser

+1

Inoltre, mi piacerebbe notare che/usr/bin/env è esso stesso un programma. È usato per determinare * dove è un eseguibile specifico. Se sai dov'è il tuo interprete python (/ usr/bin/python, ad esempio), potresti semplicemente sostituire lo shebang con: #!/Usr/bin/python. Questo vale anche per qualsiasi comando eseguibile - perl, python, bash, ecc. – efritz

4

Si desidera uno shebang. #!/path/to/python. Mettilo sulla prima riga del tuo script python. Lo #! è in realtà un numero magico che indica al sistema operativo di interpretare il file come uno script per il programma chiamato. È possibile fornire /usr/bin/python o, per essere più portabile, /usr/bin/env python che chiama il programma /usr/bin/env e indica che si desidera l'interprete Python installato nel sistema.

Dovrai anche mettere il tuo script sul tuo percorso, a meno che tu non stia bene digitando ./SQLsap args.

3

Supponendo che questo è su un sistema Unix, è possibile aggiungere una "baracca" sulla parte superiore del file in questo modo:
#!/usr/bin/env python

E poi impostare il flag eseguibile in questo modo:
chmod +x SQLsap

2

Su Windows o DOS puoi avvicinarti mettendo il tuo codice Python in un file .BAT come questo.

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 

Purtroppo, non riesco a sbarazzarsi della prima riga del messaggio in uscita, ma si può sempre cambiare il testo dopo ''' di essere qualcosa come il nome dell'applicazione e la gente non se ne accorgesse.

Idealmente, non si inserirebbe molto codice Python nel file .BAT ma si importerebbe un file .py e quindi si eseguirà il suo metodo .__main__.

+0

Nice mod, ma penso che la soluzione * ufficiale * sia associare estensioni degli script Python all'interprete Python. –

0

in UNIX, si utilizza una linea shebang all'inizio del vostro script:

#!/usr/bin/env python 

rendere il file eseguibile:

chmod +x arbitraryname 

e metterlo in una directory del PATH (può essere un link simbolico):

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

In Windows, i file come * .py è stato impostato per essere aperto con python.exe per impostazione predefinita. (In caso contrario, è possibile impostare manualmente.) Quindi è possibile eseguire direttamente i file * .py nella console.

Nota che:

In Windows, il codice di testo nuova linea è "\ r \ n", ma in UNIX, si tratta di "\ n". Se lo script python è in formato Windows, l'esecuzione in unix riporterà l'errore "Nessun file o directory". Per risolvere questo problema, è sufficiente sostituire tutti "\ r \ n" con "\ n" in unix sarà ok.

1

Un altro modo per farlo sarebbe quello di impacchettare il tuo script python.

Quindi tutto quello che dovresti fare è eseguire $ pip install package-name e semplicemente eseguire $ package-name da qualsiasi directory eseguirà il tuo script python.

Vorrei raccomandare questo metodo poiché consente di condividere/installare/utilizzare/rimuovere rapidamente lo script Python.

Ho scritto un semplice script QuickPackage che può creare e caricare istantaneamente il pacchetto python per il tuo fantastico script semplicemente inserendo il percorso del tuo script python.

Esempio:

$ pip install quickpackage 

Uso:

Uso Basta eseguire quickpackage e immettere il percorso dello script python.

Esempio:

❯ 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 

Ora semplicemente eseguire lo script eseguendo $ quickpackage (in questo caso)

Problemi correlati