2013-10-07 18 views
6

Desidero utilizzare l'impostazione predefinita (nessun pacchetto del sito) di virtualenv.crea alcuni moduli da pacchetti di siti globali disponibili in virtualenv

Ma alcuni moduli sono difficili da installare in un virtualenv (ad esempio gtk). Con "difficile" intendo che è necessario avere un sacco di file c-header installati e molte cose da compilare.

So che posso risolvere questo problema non installando questi pacchetti con pip, ma per creare collegamenti simbolici per rendere disponibili alcuni moduli dalla directory globale dei siti del sito.

Ma questa è la direzione giusta?

C'è un modo per creare i collegamenti simbolici con pip o virtualenv?

Aggiornamento

Nel 2013 ho voluto alcuni moduli come psycopg2, gtk, python-LDAP e altri che sono installati sul mio server Linux tramite giri/dpkg nel virtualenv.

Il symlinking o altri work-around hanno reso le cose più complicate, non più semplici. Usiamo questa opzione oggi (2017)

--system-site-packages

dare l'accesso all'ambiente virtuale per i site-packages globali.

+0

Cosa intendi per "difficile da installare in un virtualenv', che cos'è * difficile *? I collegamenti simbolici sono ok, tuttavia, vedere http://stackoverflow.com/a/3399920/1265154 per un metodo di automazione del processo – alko

+0

@alko grazie per averlo chiesto.Ho aggiornato la domanda: è difficile/difficile dato che hai bisogno di molti file c-header e molto deve essere compilato se si installa con pip (per pacchetti come gtk o matplotlib). – guettli

risposta

0

Direi di sì, è la direzione giusta.

Le tue domande sembrano simili a qualcosa che ho affrontato: l'installazione di OpenCV in virtualenv. Il mio problema era che OpenCV non era disponibile tramite pip (Python Package Index). Quello che ho finito è stato interrogare l'installazione globale Python a livello di sistema per il modulo in questione, e quindi copiare il file .so nel mio virtualenv.

L'intero processo, compreso il Makefile boilerplate che ho usato, vengono catturati qui: https://stackoverflow.com/a/19213369/1510289

Si potrebbe fare qualcosa di simile con sim-linking invece di copiare. La ragione per cui ho finito per copiare la biblioteca era perché io uso fare, e fare non gestisce le dipendenze per i collegamenti simbolici in modo avevo bisogno (come spiegato nella URL sopra.)

Spero che questo aiuti ...

0

Come si compila ognuno di questi pacchetti "hard" da zero? stai facendo qualcosa di simile:

python setup.py install 

tal caso, sostituire quello con:

python setup.py bdist_wheel 

Poi guarda nella directory ./dist per un file .whl. Quindi prendi qualsiasi file e fallo (dopo aver attivato l'ambiente)

pip install `./dist/whateverTheFileIsCalled.whl` 
+0

Ho aggiornato la domanda. Volevamo librerie python installate in rpm/dpkg nel virtualenv. – guettli

Problemi correlati