2010-05-04 9 views
16

Preferisco solitamente creare virtualenvs con l'opzione --no-site-packages per un maggiore isolamento, e anche perché i pacchetti globali python predefiniti includono un bel po 'di pacchetti, e in genere la maggior parte di essi non sono necessari. Tuttavia vorrei ancora mantenere alcuni pacchetti selezionati in globale, come PIL o psycopg2. C'è un buon modo per includerli nel virtualenv, che può anche essere facilmente automatizzato?Incluso il pacchetto globale in un virtualenv che è stato creato con --no-site-packages

+0

Correlati: [Installazione di alcuni pacchetti utilizzando virtualenv] (http://stackoverflow.com/questions/434407/) –

risposta

11

Se si utilizza virtualenvwrapper e si potrebbe essere in grado di utilizzare lo script postmkvirtualenv per creare automaticamente i collegamenti simbolici nella nuova directory dei pacchetti del sito virtualenv.

#!/bin/sh 
cdsitepackages 
ln -s /path/to/system/site-packages/package-name 
cdvirtualenv 
+0

Ho dimenticato questa domanda, ma alla fine ho fatto esattamente questo. –

0

In realtà non ho provato questo con quei pacchetti specifici, ma suppongo che un semplice link simbolico dai pacchetti globali del sito nei pacchetti del sito di virtualenv possa funzionare, e questo è facilmente scrivibile.

8

Se si utilizza virtualenvwrapper, il comando di shell add2virtualenv dovrebbe essere presente in una virtualenv attiva. Usa:

add2virtualenv /path/to/package 

per aggiungere una voce al file PTH _virtualenv_path_extensions.pth nei vostri virtualenv site-packages.

Il vantaggio dell'utilizzo di add2virtualenv piuttosto che la creazione di collegamenti simbolici, è che è possibile rimuovere il pacchetto dall'essere importabile commentando la sua riga nel file PTH. Ciò semplifica la verifica della validità del codice rispetto a diverse versioni di una libreria da cui dipende.

+0

Sì, sono d'accordo che ora è il modo migliore. Sono abbastanza sicuro che non fosse disponibile un paio d'anni fa però. –

+0

Probabilmente non era disponibile. Sono certamente un grande fan di virtualenvwrapper per piccole cose utili come quella. Ovviamente potresti anche farlo manualmente, scrivendo il tuo file PTH. – pcurry