Python Windows FAQ
| Date: | 2007-06-28 |
|---|---|
| Version: | 10910 |
| Web site: | http://www.python.org/ |
| Traduzione: | Diego Giurgola 18 Marzo 2006 |
- 1 Come posso eseguire un programma sotto Windows?
- 2 Come posso rendere eseguibile uno script di Python?
- 3 Perché talvolta Python impiega così tanto tempo ad avviarsi?
- 4 Where is Freeze for Windows?
- 5 Un file *.pyd è l'equivalente di un file DLL?
- 6 Come posso incorporare Python in un'applicazione Windows?
- 7 Come posso usare Python per CGI?
- 8 Come posso evitare che gli editor inseriscano tabulazioni nel mio codice Python?
- 9 Come posso controllare la pressione dei tasti senza bloccare il sistema?
- 10 Come posso emulare os.kill() in Windows?
- 11 Perché os.path.isdir() fallisce su directory condivise NT?
- 12 cgi.py (o altra programmazione CGI) qualche volta non funziona su NT o win95!
- 13 Perché os.popen() non funziona in PythonWin su NT?
- 14 Perché os.popen()/win32pipe.open() non funzionano su Win9x?
- 15 PyRun_SimpleFile() fallisce su Windows ma non su Unix; perche'?
- 16 L'importazione di _tkinter fallisce su Windows 95/98: perche'?
- 17 Come posso estrarre su Windows la documentazione scaricata?
- 18 Errore di file cw3215mt.dll mancante (o cw3215.dll mancante)
- 19 L'installer segnala un avvertimento riguardante la versione di CTL3D32
Traduzione Italiana
Questo documento, di pubblico dominio, e' stato tradotto da Diego Giurgola (revisionato da Antonio Vitale): potete contattarlo per qualsiasi commento o correzione.
1 Come posso eseguire un programma sotto Windows?
Questa non è necessariamente una domanda diretta. Se si ha già familiarità con l'esecuzione di programmi da linea di comando di Windows tutto sembrerà ovvio; altrimenti si potrebbe avere bisogno di qualche consiglio. Esistono anche differenze fra Windows 95, 98, NT, ME, 2000 e XP, che aggiungono altra confusione.
A meno che si non utilizzi qualche tipo di ambiente di sviluppo integrato, si finirà a scrivere comandi Windows all'interno di ciò a cui ci si riferisce in vario modo come "finestra DOS" o "finestra del prompt dei comandi". Di solito si può creare una finestra di questo tipo dal menu Start; sotto Windows 2000 si seleziona dal menù è "Start | Programmi | Accessori | Prompt dei comandi". Si dovrebbe essere in grado di riconoscere l'avvio di una finestra di questo tipo quando si vedrà il "prompt dei comandi" di Windows, che di solito è questo:
C:\>
La lettera può essere differente, e possono esserci altre cose dopo di esso, così si può facilmente vedere qualcosa del genere:
D:\Steve\Projects\Python>
a seconda di come il vostro computer è stato configurato e da che cosa si è svolto recentemente con esso. Una volta che è stata avviata una finestra del genere, si è a buon punto per avviare dei programmi in Python.
E' necessario capire che gli script in Python hanno bisogno di essere elaborati da un altro programma chiamato interprete Python. L'interprete legge lo script, lo compila in bytecode, e quindi esegue il bytecode per far partire il programma. Così, come ci si deve organizzare in modo tale che l'interprete possa gestire Python?
Primo, è necessario che la finestra dei comandi riconosca la parola "python" come un'istruzione in grado di far partire l'interprete. Basta provare, una volta aperta la finestra dei comandi, ad inserire il comando python e premere invio. Poi si dovrebbe vedere qualcosa di simile:
Python 2.2 (#28, Dec 21 2001, 12:21:22) [MSC 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
L'interprete è stato avviato nel "modo interattivo". Questo significa che si possono inserire dichiarazioni in Python o espressioni interattivamente ed aspettarci la loro esecuzione o valutazione. Questa è una delle caratteristiche più importanti di Python. Si provi inserendo a propria scelta qualche espressione e vedendone il risultato:
>>> print "Hello" Hello >>> "Hello" * 3 HelloHelloHello
Molte persone usano tale modo interattivo come un comodo calcolatore allo stesso tempo altamente programmabile. Quando si vuole terminare la sessione interattiva di Python, tenere premuto il tasto Ctrl mentre si preme la Z, quindi il tasto "Invio" per tornare indietro al prompt dei comandi di Windows.
Si dispone nel menu Start anche di un collegamento "Start | Programmi | Python 2.2 | Python (command line)" che genera la visualizzazione del prompt >>> in una nuova finestra. In questo caso la finestra sparirà solo dopo la pressione di Ctrl-Z; Windows avvia un singolo comando "python" in una nuova finestra, che chiude quando si termina l'interprete.
Se il comando python, invece di mostrare il prompt dell'interprete >>>, dà un messaggio simile a questo:
'python' is not recognized as an internal or external command, operable program or batch file.
oppure:
Bad command or filename
allora bisogna assicurarsi che il proprio computer sia in grado di trovare l'interprete Python. Perciò è necessario modificare un'impostazione denominata PATH, cioè una lista di cartelle dove Windows va a cercare per i programmi. Si dovrebbe impostare la cartella di installazione di Python in modo tale da aggiungerla al PATH di ogni finestra dei comandi, non appena essa è avviata. Se Python è stato installato piuttosto recentemente, il comando:
dir C:\py*
ci dirà probabilmente dove è installato; la locazione solita è C:\Python23. Altrimenti ci si dovrà ridurre a cercare nell'intero proprio disco ... usando Strumenti | Cerca oppure premendo il pulsante "Cerca" e cercando "python.exe". Si supponga che si trovi Python installato nella cartella C:\Python23 predefinita al momento dell'installazione): si controlli che inserendo il comando:
c:\Python23\python
parta l'interprete come sopra (non dimenticandosi del necessario "CTRL-Z" e dell'"Invio" per uscire). Una volta verificata la presenza della cartella, basta aggiungerla alla procedura di avvio del proprio computer. Per le vecchie versioni di Windows il modo più facile per fare questo consiste nell'editare il file C:\AUTOEXEC.BAT. Si dovrebbe aggiungere ad AUTOEXEC.BAT una linea come la seguente:
PATH C:\Python23;%PATH%
Per Windows NT, 2000 e (presuppongo) XP, sarà necessario inserire una stringa come questa:
;C:\Python23
all'attuale impostazione della variabile d'ambiente PATH, che si troverà nella finestra proprietà di "Risorse del Computer" sotto la linguetta "Avanzate". Notare che se si hanno privilegi sufficienti si potrebbe presentare la scelta di installare delle impostazioni sia per l'Utente Corrente, sia per tutto il Sistema. Si preferisca l'ultima opzione se si vuole che tutti siano in grado di avviare Python sulla macchina.
Se non si ha confidenza nel fare queste modifiche da soli, si chieda pure aiuto! A questo punto si potrebbe voler riavviare il proprio sistema per essere assolutamente sicuri che le nuove modifiche abbiano effetto. Probabilmente tale riavvio non sarà necessario per Windows NT, XP o 2000. Inoltre, nelle versioni precedenti, è possibile evitarlo editando il file C:\WINDOWS\COMMAND\CMDINIT.BAT al posto di AUTOEXEC.BAT.
Adesso si dovrebbe essere in grado di avviare una nuova finestra dei comandi: inserire python al prompt C:> (o qualunque altro), e vedere il prompt >>> che indica che l'interprete Python è pronto per leggere comandi interattivamente.
Supponiamo che si abbia un programma chiamato pytest.py nella cartella C:\Steve\Projects\Python. Una sessione per avviare quel programma dovrebbe somigliare a questa:
C:\> cd \Steve\Projects\Python C:\Steve\Projects\Python> python pytest.py
Dato che si è aggiunto il nome di un file al comando di avvio dell'interprete, quando esso si avvia legge lo script in Python presente nel file nominato, lo compila, lo esegue e lo termina, e si vedrà un altro prompt C:\> prompt. Si potrebbe anche aver inserito:
C:\> python \Steve\Projects\Python\pytest.py
qualora non si fosse voluto cambiare la cartella corrente.
Sotto NT, 2000 e XP si potrebbe riscontrare che la procedura d'installazione abbia anche sistemato il comando pytest.py (o, se il file non è nella cartella corrente, C:\Steve\Projects\Python\pytest.py) in modo tale da riconoscere automaticamente l'estensione ".py" ed avviare l'interprete Python sul file nominato. L'uso di questa caratteristica va bene, ma alcune versioni di Windows hanno dei bug, il che significa che questa modalità non è esattamente equivalente all'impiego diretto dell'interprete, quindi fare attenzione.
Le cose importanti da ricordare sono:
Avviare Python dal menù Start, oppure essere sicuri che il PATH sia impostato correttamente in modo tale che Windows sia in grado di trovare l'interprete Python.
python
L'interprete Python dovrebbe fornire un prompt '>>>". Non scordare il CTRL-Z e INVIO per terminare l'interprete (e far scomparire la finestra stessa, in caso sia stata avviata dal menù Start).
Una volta che questo funziona, risulta possibile eseguire i programmi con i comandi:
python {program-file}Quando si sanno quali comandi usare, è possibile creare collegamenti per avviare l'interprete per ognuno dei propri script denominando delle definite cartelle di lavoro, ed aggiungendole ai proprio menù. Dare un'occhiata a:
python --help
in caso di esigenze più complesse.
Il modo interattivo (quando si vede il prompt >>>) è meglio utilizzato per controllare che dichiarazioni individuali ed espressioni svolgano ciò che si vuole, e per sperimentare lo sviluppo di codice nuovo.
2 Come posso rendere eseguibile uno script di Python?
Su Windows 2000, la procedura d'installazione standard di Python associa l'estensione .py al tipo di file (Python.File) e fornisce a quel tipo di file un comando di avvio dell'interprete (D:Program FilesPythonpython.exe "%1" %*). Questo è sufficiente per rendere eseguibili dal prompt dei comandi gli script come 'foo.py'. Se invece si volesse eseguire lo script scrivendo semplicemente 'foo' senza alcuna estensione, è necessario aggiungere .py alla variabile d'ambiente PATHEXT.
Su Windows NT, i passi descritti sopra, svolti dalla procedura d'installazione, permettono l'avvio di uno script mediante 'foo.py', ma un vecchio bug nel processore dei comandi NT previene tale redirezionamento dell'input o l'output di qualsiasi script. Questo spesso è importante.
Il trucco per rendere gli script in Python eseguibili sotto WinNT consiste nel fornire al file l'estensione .cmd e di aggiungere come prima linea quanto segue:
@setlocal enableextensions & python -x %~f0 %* & goto :EOF
3 Perché talvolta Python impiega così tanto tempo ad avviarsi?
Di solito Python si avvia molto velocemente su Windows, ma di rado ci sono l'improvviso prolungamento dell'avvio di Python. Non solo, succede anche che Python funziona perfettamente su altri sistemi Windows configurati nella stessa maniera.
Il problema potrebbe essere causato da una configurazione sbagliata del software antivirus presente sul computer con il problema. Alcuni scanner di virus sono noti introdurre un duplice utilizzo delle risorse quando lo scanner e' configurato per monitorare tutte le letture dal filesystem. Provare a controllare la configurazione del software antivirus sui propri sistemi per assicurarsi che siano configurati in maniera identica. McAfee, quando viene configurato per controllare tutte le letture dal filesystem, risulta particolarmente invasivo.
4 Where is Freeze for Windows?
Freeze" è un'applicazione che permette di lanciare un programma Python come un file a sè stante. Non è un compilatore: i propri programmi non funzioneranno più velocemente, ma saranno distribuibili più facilmente, specialmente sulle piattaforme con lo stesso SO e stessa CPU. Per altre informazioni si legga il file README del programma freeze.
E' possibile usare su Windows freeze, ma si devono scaricare gli interi sorgenti (vedere http://www.python.org/download/download_source.html). Il programma freeze si trova nella sottocartella Tools\freeze del percorso dei sorgenti.
Si avrà bisogno del compilatore Microsoft VC++, e probabilmente sarà necessario ricostruire Python. I file progetto necessari si trovano nella cartella PCbuild.
5 Un file *.pyd è l'equivalente di un file DLL?
Si, i file .pyd sono dll, ma ci sono alcune differenze. Se hai una DLL chiamata DLL foo.pyd, essa necessita di una funzione initfoo(). Allora, si può scrivere Python "import foo", e Python cercherà foo.pyd (così come foo.py, foo.pyc) e se lo trova, tenterà di chiamare initfoo() per l'inizializzazione. Non si colleghi il vostro .exe con foo.lib, in quanto causerebbe a Windows la richiesta della presenza della DLL.
Notare che il percorso di ricerca di foo.pyd è PYTHONPATH, e non lo stesso percorso che Windows usa per cercare foo.dll. Inoltre, nel caso in cui sia sia collegata la propria applicazione ad una dll, viene richiesta anche questa: non è necessaria la presenza di foo.pyd per l'avvio dell'applicazione. Naturalmente, foo.pyd viene richiesto se si intende importarlo: "import foo". In una DLL, il collegamento viene dichiarato nel codice sorgente mediante __declspec(dllexport). In un .pyd, il collegamento viene definito in una lista delle funzioni disponibili.
6 Come posso incorporare Python in un'applicazione Windows?
L'incorporamento dell'interprete Python ad un'applicazione Windows può essere riassunto nel modo seguente:
_Non_ generare direttamente Python nel proprio file .exe. In Windows, Python deve rimanere una DLL che gestisce l'importazione di moduli che a loro volta siano delle DLL. (Questo è il primo aspetto importante non documentato.) Collegarlo invece a pythonNN.dll; generalmente è installato in C:\Windows\System. NN rappresenta il numero della versione di Python: "23" per Python 2.3.
E' possibile collegarsi a Python staticamente o dinamicamente. Collegarsi staticamente significa connettersi mediante pythonNN.lib, mentre collegarsi dinamicamente significa connettersi attraverso pythonNN.dll. Lo svantaggio del collegamento dinamicamico è che la propria applicazione non funzionerà se pythonNN.dll non è presente nel sistema. (Nota generale: pythonNN.lib è la cossidetta "import lib" corrispondente a python.dll. Essa definisce soltanto i simboli per il linker.)
La connessione dinamica semplifica notevolmente le opzioni di collegamento: tutto avviene durante l'esecuzione. Il codice deve caricare pythonNN.dll usando la routine Windows LoadLibraryEx(). Il codice inoltre deve utilizzare l'accesso alle routine e ai dati presenti in pythonNN.dll (che non è altro che le API in C di Python) usando puntatori ottenuti dalla routine GetProcAddress()di Windows. Le macro, mediante questi puntatori, possono essere trasparenti a qualsiasi codice in C che chiami le routine API in C di Python.
Nota per gli utenti di Borland: convertire prima pythonNN.lib al formato OMF usando Coff2Omf.exe.
Se si usa SWIG, è facile la creazione di un "modulo estensibile" in Python che renda i dati e i metodi dell'applicazione disponibili a Python. SWIG si occuperà di tutti gli scomodi dettagli che dovreste gestire. Il risultato è un codice in C da collegarsi al proprio file .exe (!) _Non_ si deve creare un file DLL, e questo semplifica di molto il collegamento.
SWIG genererà una funzione init (una funzione in C) con nome dipendente dal nome del modulo di estensione. Per esempio, se il modulo si chiama leo, la funzione init verrà chiamata initleo(). Se si usano le classi shadow di SWIG, come si dovrebbe, la funzione init si chiamerà initleoc(). Questo inizializza una classe utile, generalmente nascosta, impiegata dalla classe shadow.
La ragione per cui, nel passaggio 2, si può collegare il codice al proprio file .exe è che la chiamata della funzione di inizializzazione è equivalente all'importazione del modulo in Python! (Questo è il secondo aspetto importante non documentato.)
In breve, per inizializzare l'interprete Python con il vostro modulo d'estensione è possibile utilizzare il codice seguente.
#include "python.h" ... Py_Initialize(); // Initialize Python. initmyAppc(); // Initialize (import) the helper class. PyRun_SimpleString("import myApp") ; // Import the shadow class.Ci sono due problemi con le API in C di Python che diventeranno evidenti in caso di utilizzo di un compilatore diverso da MSVC, quello usato per compilare pythonNN.dll.Ci sono due problemi con le API in C di Python che diventeranno evidenti in caso di utilizzo di un compilatore diverso da MSVC, quello usato per compilare pythonNN.dll.
Problema 1: Le cosiddette funzioni di "Altissimo Livello" che prendono gli argomenti FILE * in un ambiente multi-compilatore non funzioneranno perché ciascuna implementazione della struttura FILE sarà differente. Da un punto di vista implementativo, sono funzioni di molto _basso_ livello.
Problema 2: SWIG al momento della creazione dei wrapper per le funzioni void, genera il codice seguente:
Py_INCREF(Py_None); _resultobj = Py_None; return _resultobj;
Ahimè, Py_None è una macro che espande la referenza ad una struttura dati complessa chiamata _Py_NoneStruct all'interno di pythonNN.dll. Di nuovo, questo codice non funzionerà in un ambiente con più compilatori. Rimpiazzare questo codice con:
return Py_BuildValue("");E' possibile usare il comando %typemap di SWIG per fare il cambiamento automaticamente, anche se non sono riuscito a farlo funzionare. (Sono un principiante riguardo SWIG).
Non è una buona idea usare uno script di shell Python per aprire dalla propria applicazione Windows una finestra dell'interprete Python; la finestra risultante sarà indipendente dal sistema di gestione delle finestre della propria applicazione. Piuttosto, voi (o la classe wxPythonWindow) dovreste create una finestra "nativa" dell'interprete. E' facile connettere tale finestra all'interprete Python. Si può redirigere l'i/o in Python a _qualsiasi_ oggetto che supporta la lettura e la scrittura, così tutto ciò che si necessita è un oggetto Python (definito nel vostro modulo d'estensione) che contenga i metodi read() e write().
7 Come posso usare Python per CGI?
Sul server Microsoft IIS o su Win95 MS Personal Web Server dovete configurare Python allo stesso modo in cui si configurerebbe qualsiasi altro motore di scripting.
Avviate regedt32 e e andate su:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap
ed inserite la linea seguente (apportando qualsiasi modifica sia necessaria al vostro sistema):
.py :REG_SZ: c:\<path to python>\python.exe -u %s %s
Questa linea consente di chiamare lo script con un semplice riferimento come: http://iltuoserver/scripts/iltuoscript.py, presupponendo che "scripts sia una cartella eseguibile del vostro server (come solitamente è predefinita). L'opzione "-u" specifica per stdin la modalità senza buffer e binaria - necessaria quando si lavora con dati binari.
Inoltre, quando usate in questo contesto, non è una buona idea l'utilizzo di ".py" come estensione dei file (potreste voler riservare l'estensione *.py per i moduli di supporto e usare le estensioni *.cgi o *.cgp per gli script dei "programmi principali").
Per riuscire a configurare Internet Information Services 5 per utilizzare Python nelle elaborazioni CGI, si vedano gentilmente i seguenti collegamenti
http://www.e-coli.net/pyiis_server.html (per Win2k Server) http://www.e-coli.net/pyiis.html (per Win2k pro)
Configurare Apache è molto più semplice. Nel file httpd.conf, di configurazione di Apache, si aggiunga alla fine del file la riga seguente:
ScriptInterpreterSource Registry
Poi, si dia l'estensione .py ai vostri script CGI Python e si introducano nella cartella cgi-bin.
8 Come posso evitare che gli editor inseriscano tabulazioni nel mio codice Python?
Le FAQ non raccomandano l'utilizzo delle tabulazioni, e la the Python style guide [traduzione Guida allo stile per il codice Python NdT] raccomanda 4 spazi per il codice Python distribuito; questo è anche la modalità predefinita di Emacs per python.
Usando qualsiasi editor, è una pessima idea mescolare tabulazione e spaziature. A tal riguardo MSVC non differisce a tal riguardo e si configura facilmente all'utilizzo delle spaziature: andare su Strumenti -> Opzioni -> Tabulazioni, e per il tipo di file "Default" impostare a 4 la "Dimensione tabulazione" e la "Dimensione indentazione", ed attivare l'opzione "Inserire spazi".
Se si sospetta che l'attivazione della mescolanza di tabulazioni e spaziature provochi problemi negli spazi bianchi iniziali, avviare Python con l'opzione -t oppure eseguire Tools/Scripts/tabnanny.py per verificare un insieme di cartelle in modalità batch.
9 Come posso controllare la pressione dei tasti senza bloccare il sistema?
Usando il modulo msvcrt. Questo è un modulo d'estensione specifico per Windows. Definisce la funzione kbhit() che verifica se sia stato premuto un tasto, e la funzione getch() che ottiene il carattere senza ritrasmetterlo.
10 Come posso emulare os.kill() in Windows?
Si impiegano le win32api:
def kill(pid):
"""kill function for Win32"""
import win32api
handle = win32api.OpenProcess(1, 0, pid)
return (0 != win32api.TerminateProcess(handle, 0))
11 Perché os.path.isdir() fallisce su directory condivise NT?
La soluzione sembra essere inserire sempre il carattere "\" alla fine delle unità condivise.
>>> import os >>> os.path.isdir( '\\\\rorschach\\public') 0 >>> os.path.isdir( '\\\\rorschach\\public\\') 1
Ciò aiuta a considerare le cartelle condivise come lettere di unità. Ad esempio:
k: non è una cartella k:\ è una cartella k:\media è una cartella k:\media\ non è una cartella
Si applica la stessa regola anche con la sostituzione di "k:" con "\conkyfoo":
\\conky\foo is not a directory \\conky\foo\ is a directory \\conky\foo\media is a directory \\conky\foo\media\ is not a directory
12 cgi.py (o altra programmazione CGI) qualche volta non funziona su NT o win95!
Assicurarsi di avere la versione più recente di python.exe, e che la stiate effettivamente usando piuttosto che la versione della GUI di Python, e che avete configurato il server per eseguire:
"...\python.exe -u ..."
per l'esecuzione di CGI. Su NT e Win95, l'opzione -u (senza buffer) previene l'alterazione da parte dell'interprete di newlines riguardo lo standard input ed output. Senza di essa le richieste post/multipart sembreranno avere una lunghezza sbagliata e le risposte binari (ad esempio un file GIF) potrebbero essere alterate (avendo come risultato immagini parziali, file PDF, e il fallimento durante lo scarico di altri file binari).
13 Perché os.popen() non funziona in PythonWin su NT?
La ragione per cui os.popen() non funziona all'interno di PythonWin è dovuta a causa di un bug presente nella Microsoft's C Runtime Library (CRT). La CRT assume che si abbia una console Win32 correlata al processo.
Si dovrebbe invece utilizzare popen() del modulo win32pipe che è dipendente dalla presenza di una console Win32 correlata.
Example:
import win32pipe
f = win32pipe.popen('dir /c c:\\')
print f.readlines()
f.close()
14 Perché os.popen()/win32pipe.open() non funzionano su Win9x?
Esiste un bug in Win9x che impedisce il funzionamento di os.popen/win32pipe.popen*. Le buone notizie sono che è possibile aggirare il problema. L'articolo Microsoft Knowledge Base di cui si necessita è: Q150956. Si troveranno i collegamenti riguardanti la "knowledge base" presso: http://www.microsoft.com/kb.
15 PyRun_SimpleFile() fallisce su Windows ma non su Unix; perche'?
Questo è dipendente dalla versione e (forse) anche dalle opzioni del compilatore che viene fornito. Se la struttura FILE* presente nel programma incorporato non è identica a quella assunta da parte dell'interprete Python, essa non funzionerà.
Le DLL Python 1.5.* (python15.dll) sono tutte compilate con MS VC++ 5.0 e con l'opzione multithreading-DLL (/MD).
Se non è possibile cambiare compilatore oppure opzioni, si provi ad utilizzare Py_RunSimpleString(). Un trucco per farlo funzionare come un file qualunque è di effettuare una chiamata a execfile() con, come argomento, il nome del file.
Notare inoltre che adesso non è possibile scambiare fra di loro le versioni di Release e di Debug. Se si desidera utilizzare la DLL Debug Multithreaded, allora in vostro modulo _deve_ avere un "_d" aggiunto al nome di partenza.
16 L'importazione di _tkinter fallisce su Windows 95/98: perche'?
Talvolta l'importazione di _tkinter fallisce su Windows 95 o 98, comportando un messaggio simile al seguente:
ImportError: DLL load failed: One of the library files needed to run this application cannot be found.
Potrebbe essere che non si sia installato il protocollo Tcl/Tk, ma se così non fosse, e l'applicazione Wish funziona correttamente, il problema potrebbe dipendere dal fatto che la procedura d'installazione non è riuscita a variare correttamente il file autoexec.bat. Essa tenta di aggiungere un'istruzione che modifica la variabile d'ambiente PATH per includere la sottocartella 'bin' di Tcl/Tk, ma talvolta questa modifica non va a buon fine. Aprire tale file con Notepad di solito rivela qual è il problema.
(Un suggerimento supplementare, fatto presente da David Szafranski: non si possono usare nomi di file molto lunghi qui; ossia si deve usare C:\PROGRA~1\Tcl\bin invece di of C:\Program Files\Tcl\bin.)
17 Come posso estrarre su Windows la documentazione scaricata?
Talvolta, quando si scarica, usando un browser web, la documentazione su di una macchina Windows, l'estensione del file salvato finisce con .EXE. Questo è un errore; l'estensione dovrebbe essere .TGZ.
Semplicemente rinominare il file scaricato in modo da avere l'estensione .TGZ, così WinZip sarà in grado di gestirlo. (Se la vostra copia di WinZip non lo fa, scaricarne una più recente da http://www.winzip.com.)
18 Errore di file cw3215mt.dll mancante (o cw3215.dll mancante)
Talvolta usando su Windows Tkinter, si ottiene un errore per la mancanza del file cw3215mt.dll oppure cw3215.dll.
Causa: si possiede una vecchia versione, costruita con cygwin, della DLL Tcl/Tk posizionata nel proprio percorso path (probabilmente C:\Windows). Basta utilizzare le DLL dell'installazione standard di Tcl/Tk (fornite assieme a partire da Python 1.5.2).
19 L'installer segnala un avvertimento riguardante la versione di CTL3D32
La procedura d'installazione di Python presenta un messaggio di avvertimento come questo:
This version uses ``CTL3D32.DLL`` whitch is not the correct version. This version is used for windows NT applications only.
[Tim Peters] Questa è una DLL Microsoft, e una nota fonte di problemi. Il messaggio è molto chiaro: si possiede, nel proprio sistema operativo, di una versione sbagliata di questa DLL. Non è l'installazione di Python a causare questo -- qualcos'altro che si è installato precedentemente ha sovrascritto la DLL del vostro OS (probabilmente qualche sorta di shareware, ma non c'è modo di precisarlo). Se si cerca "CTL3D32" in qualsiasi motore di ricerca (AltaVista, per esempio), si troveranno centinaia e centinaia di pagine web riguardanti lo stesso problema verificatosi in tutti i generi di programmi di installazione. Segnaleranno in che modo reinstallare la versione corretta sul vostro sistema (dato che Python non causa ciò, non possiamo risolverlo).
David A Burton ha scritto un piccolo programma per sistemarlo. Andare su http://www.burtonsys.com/download.html e premere su "ctl3dfix.zip".
