Pacchetto compreso globale in un virtualenv che è stato creato con --no-site-packages
-
03-10-2019 - |
Domanda
Mi piacerebbe di solito preferisco creare virtualenvs con --no-site-packages opzione per più di isolamento, e anche perché di default pitone pacchetti globale include un bel po 'di pacchetti, e di solito la maggior parte di loro non sono necessari. Tuttavia avrei ancora voglia di mantenere un paio di selezionare i pacchetti in globale, come il PIL o psycopg2. C'è un buon modo per includerli nella virtualenv, che può anche essere automatizzato facilmente?
Soluzione
Se stai usando virtualenvwrapper e si potrebbe essere in grado di utilizzare il postmkvirtualenv script per creare automaticamente i collegamenti simbolici nella directory del nuovo virtualenv sitepackages.
#!/bin/sh
cdsitepackages
ln -s /path/to/system/site-packages/package-name
cdvirtualenv
Altri suggerimenti
Se si utilizza virtualenvwrapper , il comando add2virtualenv
guscio deve essere presente in un virtualenv attiva. Usa:
add2virtualenv /path/to/package
per aggiungere una voce al file _virtualenv_path_extensions.pth
PTH nei vostri virtualenv site-packages.
Il vantaggio di utilizzare add2virtualenv piuttosto che creare link simbolici te stesso, è che si può rimuovere il pacchetto da essere importabile commentando la sua linea nel file di PTH. Questo rende più facile per verificare la validità del codice contro diverse versioni di una libreria da cui dipende.
Non ho effettivamente provato questo con questi pacchetti specifici, ma direi che un semplice link simbolico dai site-packages globali in site-packages del VIRTUALENV potrebbe funzionare, e questo è facilmente script.