2009-12-07 11 views
7
  1. Se ho un determinato pacchetto installato sia nei pacchetti globali del sito che in quello locale, quale pacchetto verrà importato? Funzionerà o otterrò un errore?
  2. Quali pacchetti devo inserire nei pacchetti globali del sito e quali in quello locale?

risposta

9

La risposta precedente avvolge fino domanda 1 ma ignora domanda 2.

La migliore medicina generale che ho visto per quali pacchetti di mettere a livello globale:

In primo luogo, i pacchetti di base di Python, in quanto questi don' t cambia con i problemi incompatibili con le versioni precedenti, a meno che tu non stia aggiornando una versione principale e vorresti che qualsiasi correzione di sicurezza da un aggiornamento python si applichi automaticamente ai tuoi virtualenvs.

In secondo luogo, i pacchetti che sono difficili da installare easy_install o pip in ogni singolo virtualenv, ma che non cambiano molto spesso - MySQLdb/psycopg e PIL, per esempio.

Praticamente tutto il resto dovrebbe essere inserito nei pacchetti di virtualenv (consiglio vivamente di utilizzare i file di requisiti pip e virtualenvwrapper per rendere questo minimo doloroso e facile da configurare su altre macchine).

3

L'ambiente virtuale appena creato per impostazione predefinita ha accesso alla directory globale dei pacchetti del sito, a meno che non sia stato creato con --no-site-packages. La chiamata a easy_install (installazione di nuovi pacchetti) con determinati ambienti attivati ​​causerà la sovrascrittura locale di quelli già esistenti nei pacchetti globali del sito (simile all'ereditarietà). L'ambiente utilizzerà i propri pacchetti locali, quando mancano - quelli globali.

+5

* L'ambiente virtuale appena creato per impostazione predefinita ha accesso alla directory globale dei siti del sito * Questo non è più vero. –

Problemi correlati