Duplicata possible:
Faire en sorte que virtualenv hérite de packages spécifiques de vos sites-packages globaux
Existe-t-il un moyen de créer un virtualenv
pour Python et spécifiez les packages à utiliser ( hérité) de l'installation à l'échelle du système, et lesquels devraient être ignorés de l'installation à l'échelle du système?
Plus précisément, disons par exemple qu'il existe un système - à l'échelle de:
numpy
scipy
matplotlib
Je souhaite créer un environnement virtuel tel que:
numpy
et scipy
matplotlib
et me laisse installer/mettre à niveau mes propres versions de celui-ci (avec pip -U matplotlib
).Est-ce possible?
La façon la plus simple de le faire est de créer un virtualenv qui inclut les packages du site système, puis d'installer les versions dont vous avez besoin:
$ virtualenv --system-site-packages foo
$ source foo/bin/activate
$ pip install Django==1.4.3
Vous pouvez également nettoyer le virtualenv par la suite en vérifiant la sortie de (suppression des packages système-site avec pip freeze
et en supprimant les packages dont vous ne voulez pas.pip uninstall
ne fonctionne plus pour les nouvelles versions de virtualenv)
Une autre façon serait de créer un virtualenv propre et de lier les pièces dont vous avez besoin:
$ virtualenv --no-site-packages foo
$ source foo/bin/activate
$ ln -s /usr/lib/python2.7/dist-packages/PIL* $VIRTUAL_ENV/lib/python*/site-packages
Les commandes peuvent être légèrement différentes dans un environnement non unixish. Les chemins dépendent également du système que vous utilisez. Afin de trouver le chemin vers la bibliothèque, démarrez le python Shell (sans virtualenv activé), importez le module et cochez module_name.__path__
. par exemple.
Python 2.7.3 (default, Sep 26 2012, 21:51:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> PIL.__path__
['/usr/lib/python2.7/dist-packages/PIL']
De plus, si vous avez créé votre virtualenv avec --system-site-packages
, il est possible d'installer une version plus récente que celle du système avec pip install --upgrade --ignore-installed numpy
.