virtualenv: określanie, które pakiety mają być używane w całym systemie vs lokalne [duplikat]

Możliwy duplikat:
spraw, aby virtualenv odziedziczył określone pakiety z Twojej globalnej witryny-packages

Czy istnieje sposób, aby utworzyć virtualenv dla Pythona i określić, które pakiety powinny być używane (dziedziczone) z instalacji systemowej, a które z nich powinny być ignorowane z instalacji systemowej?

Dokładniej, powiedzmy na przykład, że istnieje system-szeroka instalacja:

numpy
scipy
matplotlib

I Chciałbym stworzyć wirtualne środowisko takie, że:

  • wykorzystuje systemową instalację numpy i scipy
  • ignoruje system-wide matplotlib, i pozwala mi zainstalować/uaktualnić moje własne wersje z niego (z pip -U matplotlib).
Czy to możliwe?
Author: Community, 2013-01-29

1 answers

Najprostszym sposobem na to jest stworzenie virtualenv, który zawiera pakiety witryny systemowej, a następnie zainstalowanie potrzebnych wersji:

$ virtualenv --system-site-packages foo
$ source foo/bin/activate
$ pip install Django==1.4.3

Możesz także wyczyścić virtualenv, sprawdzając Wyjście pip freeze i usuwając pakiety, których nie chcesz. (usunięcie system-site-packages za pomocą pip uninstall nie działa już w nowszych wersjach virtualenv)

Innym sposobem byłoby stworzenie czystego virtualenv i połączenie części, które need:

$ virtualenv --no-site-packages foo
$ source foo/bin/activate
$ ln -s /usr/lib/python2.7/dist-packages/PIL* $VIRTUAL_ENV/lib/python*/site-packages

Polecenia mogą być nieco inne w środowisku nie-unixish. Ścieżki zależą również od używanego systemu. W celu znalezienia ścieżki do biblioteki Uruchom powłokę Pythona (bez aktywowanego virtualenv), zaimportuj moduł i sprawdź module_name.__path__. np.

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']
 64
Author: bikeshedder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-28 21:41:23