[PIPython] prendere confidenza con il pacchetto ActivePython

Alex Martelli aleaxit
Ven 19 Nov 2004 15:16:41 CET


On 2004 Feb 05, at 10:45, Antonio wrote:

> Salve a tutti. Sono un novizio in Python e volevo chiedere alcune cose 
> per prendere confidenza col tool che mi ho installato nel mio pc.
>  
> Ho win 98 ed ho installato ActivePython 2.3.2.
>  
> Vorrei che cortesemente mi spiegaste la struttura dell'installazione, 
> cioè, vedo che nelle mie sottodirectory ci sono una marea di file 
> *.py, *.pyc, *.pyd, *.h, *.pyw ecc...
>  
> DOMANDA 1- Che sono i file *.pyc, *.pyd, *.pyw ?
>

.pyc: bytecode compilato senza ottimizzazione
.pyd: modulo di estensione a Python scritto in C, compilato e linkato, 
praticamente una DLL fatta apposta perche` Python la carichi
.pyw: sorgenti di un programma principale Python da eseguirsi con 
pythonw.exe, cioe` SENZA mostrare la finestra DOS (mentre python.exe la 
mostrerebbe), tipicamente dunque con GUI

> C:\Python23\python.exe
> C:\Python23\pythonw.exe
> C:\Python23\w9xpopen.exe
>  
> DOMANDA 2: Dei tre exe, il primo è avvia Python in una semplice shell. 
> Gli altri 2?
>

python.exe senza argomenti ti da` una sessione interattiva in modo 
testo; se gli passi come argomento un programma principale Python lo 
esegue mostrando la finestra DOS.  pythonw.exe e` fatto per passargli 
come argomento un programma principale python: lo esegue senza mostrare 
la finestra DOS.

w9xpopen.exe serve esclusivamente ad aggirare i bachi che win95 e win98 
avevano sulla comunicazione interprocesso via pipe (quindi a far 
funzionare os.popen nella libreria standard Python anche su questi 
sciagurati e bacatissimi ambienti).

>   
> Come ambienti ActivePython mette a disposizione (o qualcun altro oltre 
> questi?):
>  
> PythonWin IDE  C:\Python23\Lib\site-packages\Pythonwin\pythonwin.exe
> Idle                    C:\Python23\Lib\idlelib\idle.pyw
>  
> DOMANDA 3: Che differenza c'è tra i due?

IDLE e` l'IDE standard Python disponibile in tutte le piattaforme, usa 
per la GUI Tkinter.  PythonWin e` solo Windows, e usa per la GUI le MFC 
in una finestra MDI.  Potenza grosso modo equivalente.  Una volta IDLE 
era piuttosto limitato, ma oggi e` molto cresciuto e personalmente lo 
preferisco, ma se uno e` un patito sfegatato dell'ormai datatissimo 
look MDI (PythonWin non viene aggiornata da lunga pezza...) ha 
un'alternativa.

>   
> DOMANDA 4: In diverse sottodirectory vedo che ci sono dei file *.py il 
> cui nome inizia per test_*, sono i tipici file di esempio che si 
> trovano in ogni programma per farne capire il funzionamento (in questo 
> caso le possibilità del linguaggio)?

No, sono file contenenti dei test (unit test) che, eseguiti, 
garantiscono la buona istallazione di ogni parte del package.  Gli 
esempi dovrebbero essere in una directory Demo e non credo che faccia 
parte della distribuzione Active (occorre prendere invece, anzi in 
addizione, il pacchetto dei _sorgenti_ di Python per essere sicuri di 
avere TUTTI gli esempi, sia in Demo sia in Tools).

>  
> DOMANDA 5: nella cartella C:\Python23\include\ ci sono dei file *.h, 
> sarebbero i moduli C per velocizzare Python?

Sono gli header file che ti permettono di scrivere moduli C che 
collaboreranno poi con Python come sue estensioni.
>

> DOMANDA 6: le librerie di Python hanno estensione (*.dll, *.pyd nella 
> cartella DLLs) *.py? Se così

Le estensioni di Python scritte in C, compilate e linkate, hanno 
estensione .pyd (preferibilmente, per identificarle) o .dll (piu` 
generica

> fosse, non posso avviare un file *.py di quelli contenuti in Lib come 
> se fosse codice di una

Un file .py inteso come modulo da caricare PUO` permetterti di 
eseguirlo anche come programma principale (allora eseguira` tipicamente 
i test che lo riguardano) con l'idioma del test su __name__

> applicazione, giusto? Qualcuno può informarmi sul contenuto di 
> quelcuna delle sottodirectory di  Lib? Ad occhio sembrano interessanti 
> cygwinccompiler.py, bcppcompiler.py, ccompiler.py, emxccompiler.py, 
> msvccompiler.py, mwerkscompiler.py, unixccompiler.py : sono i diversi 
> compilatori di cui dispone ActivePython? Se così fosse, come scelgo 
> dall'ambiente il compilatore?

Sono i diversi compilatori supportati da distutils quando richiedi di 
compilare e linkare sorgenti C di un'estensione per Python.  Per usare 
compilatori diversi da quello Microsoft, oltre ovviamente ad essterteli 
istallati, devi tipicamente fare operazioni di preparazione perche` 
detti altri compilatori non possono tipicamente usare delle DLL ecc 
scritte con/per quelli Microsoft senza passate di preparazione che 
dipendono dal compilatore.  L'ambiente non c'entra, distutils si esegue 
invece da linea comandi.

>  
> C:\Python23\Lib\compiler se non mi inganno sembra contenere le 
> direttive di sintassi, identazione...

E` un pacchetto alternativo, sperimentale, per compilare Python usando 
Python invece di C.  Interessa solo a utenti molto avanzati in vena di 
sperimentazioni.

>  
> DOMANDA 7: con ActivePython mi installo contemporaneamente anche delle 
> librerie per la scrittura di programmi GUI. La C:\Python23\Lib\lib-tk 
> è il supporto Tkinter? Ho anche qualche altra libreria per le GUI che 
> ancora ignoro?

PythonWin, che supporta le MFC (ovviamente se scrivi GUI usando quelle 
andranno solo su Windows).

>  
> DOMANDA 8: se potete mi aggiungete qualcosina su C:\Python23\tcl\ e 
> C:\Python23\Tools\ ?
>  

L'istallazione di Tcl (e Tk) e` indispensabile per usare Tkinter, che 
su quelli si appoggia.  Quali dei tools standard di Python ActiveState 
distribuisca, non so.

>  
> Chiedo scusa a tutti per le molte domande forse poco intelligenti, ma 
> per me credo sia fondamentale sapere bene cosa ho sotto le mani, in 
> modo da essere più efficiente nel momento in cui metto in pratica ciò 
> che imparo.
> Sarei felice di ricevere risposta anche ad una sola delle mie domande; 
> mi rendo conto che per la stessa persona è scocciante rispondere a 
> tutte, ma una risposta per uno non fa male a nessuno... :-)

Per carita`, nessun problema.


Alex




More information about the Python mailing list