web-dev-qa-db-fra.com

Faire en sorte que virtualenv hérite de packages spécifiques de vos packages de site globaux

Je cherche un moyen de créer un virtualenv qui ne contiendra que quelques bibliothèques (que j'ai choisies) de l'installation de base python.

Pour être plus concret, j'essaie d'importer mon matplotlib dans virtualenv lors de la création de virtualenv. Il ne peut pas être installé efficacement avec pip ou easy_install car certaines bibliothèques du compilateur fortran lui manquent. La façon dont je l’ai fait jusqu’à présent consistait à copier manuellement à partir de

/usr/lib/python2.7/dist-packages/ to virtualenv_name/lib/python2.7/dist-packages/

cependant, cela empêche les liens importés par manully d'être enregistrés par le jaune (qui imprime toutes les bibliothèques actuellement disponibles dans virtualenv).

Alors, y at-il un moyen de faire une variante sélective de la

virtualenv --system-site-packages
185

Créez l'environnement avec virtualenv --system-site-packages. Activez ensuite virtualenv et lorsque vous souhaitez installer des éléments dans virtualenv plutôt que dans le python système, utilisez pip install --ignore-installed ou pip install -I. De cette façon, pip installera ce que vous avez demandé localement, même s'il existe une version système. Votre interprète python recherchera en premier dans le répertoire de paquets de virtualenv, ces derniers devraient donc masquer les paquets globaux.

209
foobarbecue

Vous pouvez utiliser le --system-site-packages puis "surinstaller" les éléments spécifiques à votre virtualenv. Ainsi, tout ce que vous installez dans votre virtualenv sera pris à partir de là, sinon il sera pris à partir de votre système.

17
schacki