2011-09-27 12 views
42

Mam kilka małych skryptów narzędziowych napisanych w Pythonie, które chcę używać zarówno w systemie Windows, jak i Linux. Chcę uniknąć konieczności jawnego wywoływania interpretera Pythona. Czy istnieje prosty sposób na umieszczenie notacji shebang w odpowiednich lokalizacjach w systemach Windows i Linux? Jeśli nie, czy istnieje inny sposób na umożliwienie niejawnego wywoływania interpretera Pythona w systemach Windows i Linux bez konieczności modyfikowania skryptu podczas przesyłania między systemami operacyjnymi?Shebang Notation: Skrypty w języku Python w systemach Windows i Linux?

Edit: Wsparcie shebang na Windows jest Cygwin, ale chcę używać natywnego systemu Windows interpreter Pythona w systemie Windows, a nie jeden Cygwin.

Edit # 2: Wydaje się, że notacja shebang unieważnia skojarzenia plików w terminalach Cygwin. Chyba mógłbym odinstalować Cygwin Python i dowiązanie symboliczne/usr/bin/python do rodzimego języka Python.

+6

Nie sądzę Windows ma jakichkolwiek shebang wsparcia. Możesz spróbować utworzyć powiązanie plików z interpreter python dla plików .py. –

+0

Kontynuacja komentarza Nic ODell: Za każdym razem, gdy zainstalowałem Python na pudełku Windows, proces instalacji zadbał o utworzenie powiązania plików .py. To zawsze było za pomocą instalatora Pythona dla Windows z witryny python.org. – GreenMatt

+0

@eryksun Dzięki. –

Odpowiedz

0

Nie z shebangiem ... ale możesz ustawić powiązanie plików, zobacz this SO question, które dotyczy Perla i powiązanych odpowiedzi, które będą również istotne, ponieważ są znane problemy z przekierowaniem Windowsa i wyjścia/wyjścia. .

31

ile używasz Cygwin, Windows ma wsparcie shebang. Jednak, po zainstalowaniu Pythona, dodaje on jako plik skojarzenie dla plików .py. Jeśli umieścisz tylko nazwę skryptu w wierszu poleceń lub klikniesz dwukrotnie w Eksploratorze Windows, to będzie on uruchamiany przez pythona.

Co mogę zrobić, to należą #!/usr/bin/env python shebang w moich skryptów. Pozwala to na wsparcie dla serwera linux. Jeśli uruchomisz go na komputerze z systemem windows z zainstalowanym pythonem, to powinno być tam skojarzenie plików, które również będzie działało.

+4

Miło jest dołączyć numer wersji python. "python" nie prowadzi do "python2.7" w każdej dystrybucji. –

+0

@mid_kid dlatego użyłem env, aby uzyskać wersję pythonu, którą użytkownik określił jako domyślną. –

+1

Chodzi mi o to, że ten nie zawsze jest właściwy. Zwłaszcza jeśli rozprowadzasz swój skrypt. –

2

Install pywin32. Jedną z fajnych rzeczy jest to, że konfiguruje powiązanie plików * .py z interpreteriem pythonów.

23

Przeczytaj o Python Launcher for Windows w dokumentach, które początkowo opisano w PEP 397. Pozwala to zdefiniować niestandardowe konfiguracje shebang w ini (na przykład w celu użycia pypy), , ale po wyjęciu z pudełka można użyć wirtualnych nagłówków, takich jak #!/usr/bin/env python3, lub nagłówków z rzeczywistymi ścieżkami, takimi jak #!C:\Python33\python.exe. Możesz także dodać opcje wiersza polecenia do shebangu. Na przykład poniższy kod shebang dodaje opcję przejścia do trybu interaktywnego po zakończeniu skryptu: #!/usr/bin/python3 -i.

Python 3.3 kojarzy typy plików skryptów .py (console) i .pyw (GUI) z odpowiednio nazwanymi programami uruchamiającymi, py.exe i pyw.exe, aby umożliwić obsługę skryptów w systemie Windows. Nowe instalatory są instalowane w folderze głównym systemu Windows (tj. %SystemRoot%) podczas instalacji dla wszystkich użytkowników. W przeciwnym razie będziesz chciał dodać katalog instalacyjny do PATH, aby użyć py.exe w powłoce cmd. Następnie z wiersza polecenia można uruchomić py -2, py -3, py -2.6, py -3.3-32 (32-bitowy), i tak dalej. Program uruchamiający jest przydatny w połączeniu z -m do uruchamiania modułu jako skryptu, np. py -3 -m pip install.

Jest też wersja pylauncher, które mogą być zainstalowane oddzielnie, jeśli tylko używać Python 2.

Powiązane problemy