2011-09-27 17 views
42

Ho alcuni piccoli script di utilità scritti in Python che voglio essere utilizzabile su Windows e Linux. Voglio evitare di dover invocare esplicitamente l'interprete Python. C'è un modo semplice per indirizzare la notazione shebang alle posizioni corrette su Windows e Linux? In caso contrario, esiste un altro modo per consentire l'invocazione implicita dell'interprete Python su Windows e Linux senza dover modificare lo script durante il trasferimento tra sistemi operativi?Notazione Shebang: script Python su Windows e Linux?

Edit: Il supporto shebang su Windows viene fornito Cygwin, ma voglio usare il nativo di Windows interprete Python su Windows, non quello Cygwin.

Edit # 2: Sembra che la notazione baracca sovrascrive le associazioni di file in terminali Cygwin. Credo che potrei semplicemente disinstallare Cygwin Python e symlink/usr/bin/python in Python nativo di Windows.

+6

Non credo che Windows ha alcun tipo di sostegno la baracca. Potresti provare a creare un'associazione di file con l'interprete python per i file .py. –

+0

Seguito del commento di Nic ODell: Ogni volta che ho installato Python su una finestra di Windows, il processo di installazione si è occupato della creazione dell'associazione file per i file .py. Questo ha sempre utilizzato il programma di installazione Python per Windows dal sito python.org. – GreenMatt

+0

@eryksun Grazie. –

risposta

0

Non con shebang ... ma potrebbe essere possibile impostare un'associazione di file, vedere this SO question che si occupa di Perl e le risposte associate che saranno anche pertinenti in quanto vi sono noti problemi con Windows e stdin/out reindirizzamento.

31

A meno che non si stia utilizzando Cygwin, Windows non ha supporto per lo shebang. Tuttavia, quando si installa python, viene aggiunto come associazione file per i file .py. Se metti solo il nome del tuo script sulla riga di comando, o fai doppio clic su Windows Explorer, allora verrà eseguito tramite python.

quello che faccio è includere una #!/usr/bin/env python baracca nei miei scritti. Ciò consente il supporto di shebang su linux. Se lo si esegue su una macchina Windows con python installato, allora l'associazione file dovrebbe essere lì, e verrà eseguita pure.

+4

È bello includere il numero di versione di Python. "python" non si collega a "python2.7" in ogni distribuzione. –

+0

@mid_kid è per questo che ho usato env per ottenere la versione di python che l'utente ha specificato come predefinita. –

+1

Il mio punto è che quello non è sempre quello giusto. Soprattutto quando distribuisci il tuo script. –

2

Installare pywin32. Una delle cose buone è che imposta l'associazione file di * .py all'interprete python.

23

Leggi lo Python Launcher for Windows nella documentazione, che è stata inizialmente descritta in PEP 397. Consente di definire configurazioni personalizzate di shebang in un ini (ad esempio per utilizzare pypy), ma è possibile utilizzare shebang virtuali come #!/usr/bin/env python3 o shebang con percorsi reali come #!C:\Python33\python.exe. È anche possibile aggiungere opzioni da riga di comando a una shebang. Ad esempio, il seguente shebang aggiunge l'opzione per entrare in modalità interattiva dopo che lo script termina: #!/usr/bin/python3 -i.

Python 3.3 associa i tipi di file di script .py (console) e .pyw (GUI) con i rispettivi launcher, py.exe e pyw.exe, per abilitare il supporto shebang per gli script su Windows. I nuovi programmi di avvio vengono installati nella cartella radice di Windows (ad esempio %SystemRoot%) durante l'installazione per tutti gli utenti. Altrimenti ti consigliamo di aggiungere la directory di installazione a PATH per poter utilizzare py.exe nella shell cmd. Quindi dalla riga di comando è possibile eseguire py -2, py -3, py -2.6, py -3.3-32 (32 bit) e così via. Il programma di avvio è utile se combinato con -m per eseguire un modulo come script, ad es. py -3 -m pip install.

C'è anche una versione di pylauncher che può essere installato separatamente, se si usa solo Python 2.

Problemi correlati