Python pro Windows


Original: http://www.imladris.com/Scripts/PythonForWindows.html

Tento dokument popisuje některé z běžných úskalí při získávání python skripty běžící pod Windows, s důrazem na umožňuje python skripty CGI prostřednictvím služby Windows Apache.
Na PYTHONPATH
Hledání python.exe

Většina programů nebude fungovat z příkazového řádku DOS, pokud zadáte úplnou cestu k jejich spustitelné soubory. Při spuštění python skriptů na systému Windows, měli byste opravdu chtěli mít jen zadejte python my_script.py z adresáře, kde se vaše skript žije, aniž by museli vysvětlit, kde se nachází překladač. Chcete-li povolit toto chování, budete muset přidat python instalační adresář do proměnné prostředí PATH na vašem počítači, tato proměnná je seznam adresářů, které systém Windows automaticky seach až najít spustitelný soubor s názvem python.

Následující pokyny jsou určeny pro Windows 2000, ale měl by dát alespoň představu o tom, kde začít na dalších verzích. (Všimněte si, že můžete jen měnit proměnné prostředí, pokud jste přihlášeni jako správce stroje.) Klepněte pravým tlačítkem myši na ikonu na pracovní ploše vašeho počítače (Tento počítač titulkem, pokud jste přejmenovali to) a přejděte na příkaz Vlastnosti. To se objeví dialogové okno s informacemi o systému, klepněte na kartě Upřesnit a potom na tlačítko Proměnné prostředí. V novém dialogu, který se objeví, klikněte na proměnné PATH v poli Systémové proměnné, klepněte na tlačítko Upravit.

Umístěte kurzor do textového pole Hodnota proměnné, těsně před závěrečnou uvozovky v řetězci. Zadejte středník (oddělit předchozí hodnotu z jednoho, který se chystáte přidat) a potom zadejte umístění python spustitelný soubor ve vašem systému – pravděpodobně něco jako C: \ Python. Klepněte na tlačítko OK, dokud jste ze všech dialogových oken. Nyní, když zadáte python v každém DOS, Windows schopen automaticky vyhledat a spustit správný spustitelný soubor.
Vyhledání souborů skriptu

Nyní, když jste učil Windows najít python spustitelný soubor v adresáři instalace Pythonu, budete muset říct, že, jak najít své python skripty uložené v jiných složkách než že jeden, jinak bude vaše python příkazy import nezdaří, protože oni vyhráli ‘t vědět, kde hledat na vlastní moduly, které chcete importovat. Možné umístění modulu jsou uvedeny v proměnné prostředí PYTHONPATH, který je uložen v registru systému Windows.

Chcete-li rozšířit PYTHONPATH, spusťte příkaz regedit a přejděte na HKEY_LOCAL_MACHINE \ SOFTWARE \ Python \ PythonCore a vyberte složku pro verzi Pythonu, který chcete použít. V tomto prostoru je složka označena PYTHONPATH, s jednou položkou, která určuje cesty, kde je výchozí instalaci ukládá moduly. Klepněte pravým tlačítkem myši na PYTHONPATH a vybrat si vytvořte nový klíč. Možná budete chtít pojmenovat klíč po skončení projektu, jehož modul umístění bude specifikovat, tímto způsobem můžete snadno rozčlenit a sledovat vaše cesta úpravy.

Váš nový klíč bude mít jednu hodnotu řetězce položku s názvem (Výchozí). Pravým-klikněte na něj a změňte údaj hodnoty, což by mělo být text ve stejném formátu jako proměnné prostředí PATH uvedeno výše – absolutní adresářové cesty, oddělené středníky. Jestliže jeden projekt bude používat moduly z několika adresářů, přidejte je všechny do tohoto seznamu. (Neobtěžujte se snaží přidat další položky řetězcovou hodnotu do nového klíče nebo na původní PYTHONPATH klíče, protože budou ignorovány.) Poté, co tyto nové položky registru jsou na místě, by měla dovozní skripty “prohlášení fungovat dobře.
CGI pro Apache

Nebudu diskutovat o instalaci serveru Apache, apache.org nabízí dobré pokyny pro uživatele Windows. Budete téměř jistě chtít postupujte podle pokynů pro nastavení Apache jako službu (spíše než konzolové aplikace), protože poskytuje maximální dobu a pohodlí.

Poslední Apache instalace pro Windows najít všechny pokyny pro konfiguraci v souboru httpd.conf. Na webu se můžete setkat starší směry, které vám sdělit, upravit obsah jiných souborů, jako access.conf nebo srm.conf-nedávej. Můžete (a měli) to vše v httpd.conf. Také, aby ulehčila život pro začátečníky, httpd.conf již obsahuje většinu směrnic (Apache příkazy), které byste mohli někdy potřebovat, zapsaný jako komentáře. S cílem umožnit jim stačí smazat znak komentáře # na začátku jejich linek.

Navzdory tomuto úsilí o zjednodušení, správu Apache je stále tajemné a matoucí umění. Nebojte se přidat své vlastní komentáře do souboru httpd.conf označuje to, co se změnilo a proč, stejně jako s kódem, budete děkovat sami později. Důrazně doporučujeme přidat tento soubor do svého systému řízení zdrojů. To vám umožní (a) zálohu na pracovní verzi měli byste pokazit, a (b) zachovat průběžný záznam o tom, co jste změnili získat konkrétní pracovní funkci – velmi užitečné, pokud budete někdy potřebovat tuto funkci povolit na jiné instalace.
Základní konfigurace CGI

Ve snaze přesvědčit Apache spouštět python skriptů CGI, budete muset zajistit, že několik směrnic jsou na místě v httpd.conf. Často jsou seskupeny podle směrnice adresáři, které se vztahují na, uvnitř tagy. Výchozí dokument kořen (public html) adresář v systému Windows nainstaluje Apache / apache / htdocs, i když to lze změnit (! Do httpd.conf, samozřejmě) Za předpokladu, že jste nezměnili to, podívejte se na následující řádek:

O pár řádků níže je to ten, který začíná Možnosti aplikace Word a následuje mezerami oddělený seznam termínů. Ujistěte se, že ExecCGI je zahrnuta v tomto seznamu podmínek, což zajistí, že stránky slouží Apache je povoleno volat CGI skripty.

Nyní se podívejte dolů soubor a najít řádek čtení . Velmi mnoho směrnic jsou zahrnuty, pokud je tento modul k dispozici, ale dolů na seznamu, měli byste vidět pár řádky začínající s pojmem AddHandler. Odkomentovat (nebo přidat, když komentoval verze neexistuje) následující jedna:

AddHandler cgi-script. Py

Voila! Teď ví, že Apache. Py může být CGI skripty, a že vaše stránky mohou spustit.
Cross-platformní shebang linky

První řádek skriptu CGI je shebang řádek, který označuje umístění programu, který má být použit k interpretaci skriptu. Pokud vaše cgi skripty se spustí pouze v systému Windows, můžete použít Windows specifické shebang linky, které vypadají asi takto:

#! C :/ Python / python.exe-u

Poznámka: U-po tlumočníka cesty, což je velmi důležité. Klade interpretu jazyka Python v “unbuffered” režimu. Snažím se spustit python cgi skripty (ve výchozím nastavení), vyrovnávací paměti režimu buď za následek naprostý nedostatek návratové hodnoty z vaší cgi skriptu (projevující se jako prázdnou stránku HTML) nebo “Předčasný konec skriptu záhlaví” chyby.

Samozřejmě, že nad shebang linka nemůže použít na * nix systém (nebo dokonce systému Windows, kde je Python nainstalován na jiném místě). Existuje několik způsobů, jak vyřešit tento problém, například si můžete zacvičit hack na základě Skutečnost, že Apache interpretuje shebang cesty jak ve vztahu k pohonu kořene, pokud není písmeno je k dispozici, a předpokládá, že je. exe rozšíření, pokud žádná je zahrnuta v cestě. Proto je #! / Usr / bin / env python interpretován jako hledat env python.exe (nezapomeňte, že Windows souborů může obsahovat mezery) na c :/ usr / bin. Parametr-u chybí tady, ale unbuffered chování lze odstranit trochu štípnout do souboru httpd.conf (viz níže).

Ale počkejte! Existuje lepší způsob. Apache předvídal tento problém vyřešit, a za předpokladu, směrnici s ní zacházet. Otevřete svůj soubor httpd.conf a vložte řádek, který čte

ScriptInterpreterSource registru

Tento pokyn Apache zcela ignorovat shebang linku. Namísto toho bude zkoumat registru Windows najít program, spojený s skriptu přípony souboru (. Py) a použít tento program jako tlumočníka. Nyní si můžete zahrnout * nix linky stylu shebang ve svých skriptech v jisté poznání, že Windows Apache nebude snažit číst. Ještě lepší je, váš kód může nyní být přesunut do jiné schránky Windows, na kterém je nainstalován python nějakým nestandardním adresáři, pokud políčko v registru odráží toto místo, bude skripty poběží beze změn.

Co režim použití vyrovnávací paměti, i když? Ne ve stylu Windows shebang řádku znamená, že žádný přepínač-u. Httpd.conf na pomoc znovu. Přidejte řádky

PassEnv PYTHONPATH
SetEnv PYTHONUNBUFFERED 1

v souboru http.conf. Env návod nastavení nebo načtení proměnných prostředí z shellu, ze kterého se nazývá skript, tyto proměnné jsou pak přeneseny na samotném skriptu. První instrukce prochází PYTHONPATH proměnné (viz diskuse o nastavení této proměnné pro Windows výše) skriptu. Druhý nastaví PYTHONUNBUFFERED proměnnou prostředí 1 (true) a předá jej do skriptu, vytvoření požadovaného-u chování alternativní způsob.

© Amanda Birmingham 2004