2015-06-11 20 views
6

Conosco la differenza tra il collegamento statico e dinamico in C o C++. Ma cosa significa in Python? Dato che è solo un interprete e ha uno stile di meccanismo di importazione dei moduli, come ha senso questo?Che cosa significa per il collegamento statico e il collegamento dinamico in Python?

Se blocco la mia applicazione Python con cx_freeze escludendo una libreria specifica, è una sorta di collegamento dinamico? Perché gli utenti devono scaricare e installare la libreria da soli per poter eseguire la mia applicazione.

In realtà il mio problema è che sto usando la libreria PySide (con LGPL v2.1) per sviluppare un'applicazione GUI Python. La biblioteca dice che dovrei collegarmi dinamicamente alla biblioteca per obbedire ai loro termini legali (come Qt). In questo caso, come faccio a collegarmi a PySide in modo dinamico?

+0

Penso che in qualsiasi modo utilizzi normalmente PySide conta come collegamento dinamico, anche se fa parte dello stesso download. Se si crea un singolo file exe (che cx_Freeze non fa comunque), alcune persone potrebbero chiamare quel collegamento statico, ma penso che la maggior parte non lo farebbe. Vai avanti e usalo - è lì che le persone costruiscono applicazioni Python, quindi se è quello che stai facendo, probabilmente stai bene. –

+0

Grazie Thomas. Vuoi dire, anche se costruisco un singolo file exe (usando pyinstaller o altro), ha ancora un collegamento dinamico? Se poi posso continuare con un semplice file readme alle istruzioni su dove scaricare i sorgenti di campagna. È? – Kaje

+0

Penso che la maggior parte delle persone direbbe che è ancora un collegamento dinamico, e quello che proponi dovrebbe andare bene. Se sei preoccupato, chiedi alla [mailing list PySide] (http://lists.qt-project.org/mailman/listinfo/pyside) a riguardo - è la loro interpretazione che è importante. Ma sarei molto sorpreso se pensassero che non era abbastanza buono. –

risposta

0

In python non c'è alcun collegamento statico. Tutte le importazioni richiedono l'installazione delle dipendenze corrette sul nostro computer di destinazione. La scelta della versione di tali librerie è nella nostra decisione.

Ora veniamo ai builder binari per python. In questo caso, dovremo determinare il tipo di collegamento in base alle definizioni GNU. Se l'utente può sostituire la dipendenza a suo piacimento, è dinamico. Se la dipendenza è collegata insieme al file binario stesso, è il collegamento statico. In caso di cx_freeze o pyinstaller, se lo costruiamo come un unico file, è il collegamento statico. Se lo costruiamo in modalità normale dove tutte le dipendenze sono raccolte come file separati, è un collegamento dinamico. L'idea è, se possiamo sostituire la dipendenza nel computer di destinazione o meno.

Problemi correlati