2012-07-11 6 views

risposta

16

Se davvero hai bisogno di farlo in questo modo, puoi semplicemente copiare i file che vengono installati globalmente direttamente nel tuo virtualenv. Ad esempio, non potevo far funzionare pycurl poiché le librerie richieste non erano installate, ma lo era apt-get install python-pycurl. Così ho fatto la seguente:

sudo apt-get install python-pycurl 
cp /usr/lib/python2.7/dist-packages/pycurl* ~/.virtualenvs/myenv/lib/python2.7/site-packages/ 

L'installazione dicono che è aggiungendolo al /usr/lib/python2.7. Così ho cercato in quella directory un pacchetto-site o dist-packages con pycurl, dopo aver esaminato i file che ho copiato nel mio virtualenv. Dovresti anche copiare qualsiasi eseguibile da bin nella directory bin di virtualenv.

Inoltre, eseguendo un pycurl pip install -r requirements.txt è stato trovato correttamente e lo si è saltato sopra come se l'avessi installato tramite pip.

+0

Sì. Ho trovato la stessa decisione - solo un collegamento (ln s) alle librerie che è stato installato tramite apt-get. –

+0

Questo non funziona con PyQt5 su Python 3. Restituisce "ImportError: nessun modulo chiamato 'sip' quando si tenta di importare QWidgets – Moustache

5

Perché vuoi farlo? Il punto è quello di evitare di fare cose del genere ...

virtualenv whatever 
cd whatever 
bin/pip install dbus-python 

Si può anche scegliere di specificare --no-site-packages per virtualenv per tenerlo più isolato.

+2

Le versioni recenti di virtualenv deprecano --no-site-packages, poiché è il nuovo predefinito. –

+0

@ColinDunklau Non ne era al corrente e buono a sapersi. Grazie. –

+0

Thx per la tua risposta. Ma intendo il caso in cui non possiamo usare l'installazione di pip - ho solo un repository nel formato .deb - cosa dovrei fare allora? –

3

prima cosa installare le librerie di sviluppo dbus (potrebbe essere necessario alcune altre librerie dev, ma questo è tutto quello che dovevo)

sudo apt-get install libdbus-1-dev libdbus-glib-1-dev 

Avanti, con il virtualenv attivato, eseguire quanto segue. Fallirà, ma va bene.

pip install dbus-python 

Infine, vai nella directory di build del tuo virtualenv e installalo in modo non-pythonic.

cd $VIRTUAL_ENV/build/dbus-python 
chmod +x configure 
./configure --prefix=$VIRTUAL_ENV 
make 
make install