View Full Version : [python] building extensions
mad_hhatter
11-12-2008, 14:57
è vero che, in windows, è bene compilare le estensioni usando lo stesso compilatore usato per compilare la distribuzione di python utilizzata?
ad esempio, se python 2.5 usa MSVC 7.1, anche le estensioni andrebbero compilate con il corrispondente compilatore?
se sì, perché?
inoltre, cosa significa esattamente "compilatore corrispondente" a una data versione di MSVC (che, da quanto ho capito, è una runtime library)?
Scusate se le domande sono mal poste, ma sono un profano della programmazione windows-specific
grazie infinite per l'aiuto
cdimauro
11-12-2008, 20:43
è vero che, in windows, è bene compilare le estensioni usando lo stesso compilatore usato per compilare la distribuzione di python utilizzata?
ad esempio, se python 2.5 usa MSVC 7.1, anche le estensioni andrebbero compilate con il corrispondente compilatore?
Sì.
se sì, perché?
Perché altrimenti non si riesce a effettuare correttamente il binding con le librerie.
inoltre, cosa significa esattamente "compilatore corrispondente" a una data versione di MSVC (che, da quanto ho capito, è una runtime library)?
Purtroppo è sempre dovuto al binding di cui sopra. Una certa versione di VS utilizza un precisa versione di MSVC, per cui alla partenza se l'applicazione non trova quella corretta, non funziona (se non erro non parte nemmeno).
Scusate se le domande sono mal poste, ma sono un profano della programmazione windows-specific
grazie infinite per l'aiuto
Figurati. Non ne so molto, ma leggendo in giro la situazione dovrebbe essere quella.
Tra l'altro ne hanno parlato alla PyCon2, e ci sono problemi di binding anche fra la versione release e debug. In pratica con Python compilato in modalità release puoi effettuare il binding soltanto delle estensioni compilate con la stessa modalità e non con quelle di debug. E viceversa.
Comunque è un problema comune alle applicazioni compilate con VS.
mad_hhatter
12-12-2008, 09:31
grazie mille per l'aiuto! In effetti ne avevo sentito parlare proprio alla pyCon2, ma all'epoca non avevo ancora dimestichezza con python :)
Ma msvc viene linkata staticamente? Perché altrimenti non capisco un paio di cose:
1) la libreria msvc non si trova nel "path" di un sistema windows vergine
2) se fosse linkata donamicamente ogni estensione potrebbe portarsi dietro la sua versione di msvc e il problema non si porrebbe
In ogni caso, ho appena scaricato e installato i binding per python della libreria libtorrent. Inizialmente sembrava che dovessi compilare tutto da sorgenti, poi da sourceforge ho scaricato un installer per windows. Siccome nel nome del file scaricato non c'erano informazioni relative alla versione di python per cui era stato creato, ho avuto fortuna a trovare proprio il pacchetto per python 2.5 oppure c'è qualcosa che mi sfugge?
Tra l'altro nella pagina di documentazione sulla compilazione delle estensioni non ho trovato nulla in proposito.
cdimauro
14-12-2008, 07:22
grazie mille per l'aiuto! In effetti ne avevo sentito parlare proprio alla pyCon2, ma all'epoca non avevo ancora dimestichezza con python :)
Ma msvc viene linkata staticamente? Perché altrimenti non capisco un paio di cose:
1) la libreria msvc non si trova nel "path" di un sistema windows vergine
2) se fosse linkata donamicamente ogni estensione potrebbe portarsi dietro la sua versione di msvc e il problema non si porrebbe
Esatto. MSVC viene linkata dinamicamente, per cui all'installazione di Python ci si porta dietro la versione corretta.
In ogni caso, ho appena scaricato e installato i binding per python della libreria libtorrent. Inizialmente sembrava che dovessi compilare tutto da sorgenti, poi da sourceforge ho scaricato un installer per windows. Siccome nel nome del file scaricato non c'erano informazioni relative alla versione di python per cui era stato creato, ho avuto fortuna a trovare proprio il pacchetto per python 2.5 oppure c'è qualcosa che mi sfugge?
Secondo me il pacchetto che hai installato è già per Python 2.5, quindi compilato con la giusta versione del compilatore.
Tra l'altro nella pagina di documentazione sulla compilazione delle estensioni non ho trovato nulla in proposito.
Capita, purtroppo, di non trovare precise informazioni.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.