Molti moduli Python di terze parti dispongono di un attributo che contiene le informazioni sulla versione per il modulo (in genere qualcosa come module.VERSION
o module.__version__
), tuttavia alcuni non lo fanno.Controllo di una versione del modulo Python in fase di esecuzione
Particolari esempi di tali moduli sono libxslt e libxml2.
Ho bisogno di verificare che la versione corretta di questi moduli sia utilizzata in fase di esecuzione. C'è un modo per fare questo?
Una potenziale soluzione potrebbe essere quella di leggere l'origine in fase di esecuzione, cancellarla e quindi confrontarla con l'hash della versione nota, ma è brutto.
Esiste una soluzione migliore?
Si noti inoltre che il nome del pacchetto deve essere quello della voce PyPI. Quindi qualcosa come "pkg_resources.get_distribution ('MySQLdb'). Version" non funzionerà ma "pkg_resources.get_distribution ('mysql-python'). – Rahul
Se si sta eseguendo con un nome di file assoluto, 'pkg_resources' potrebbe prelevare una versione diversa che ombreggia quella che si sta effettivamente eseguendo perché ha una precedenza più alta su' PYTHONPATH' o simile. – tripleee
Nel caso qualcuno voglia sapere come realizzare l'attributo '__version__': http://stackoverflow.com/q/17583443/562769 –