2010-03-29 3 views
3

Когда я создаю новый virtualenv, virtualenv .virtualenvs/my_env, существует только подмножество стандартных модулей python, скопированных/связанных с новым virtualenv.virtualenv не копирует стандартные модули, такие как shutil и urllib2

Например, когда я ls -l в .virtualenvs/my_env/Lib/python2.6, я вижу:

... 
... os.py -> /usr/lib/python2.6/os.py 
... os.pyc -> /usr/lib/python2.6/os.pyc 

но модули, такие как shutil и urllib2 не копируются, даже если они находятся в /usr/lib/python2.6/shutil.py. Я использую Ubuntu 9.10.

Является ли это ожидаемым поведением? Как я могу установить такие модули, как shutil в virtualenv (я не мог найти эти модули на pypi)?

ответ

6

virtualenv munges sys.path вставить виртуальную среду перед системными библиотеками, но системные библиотеки все еще находятся на пути, так что они по-прежнему должны быть доступны.

Так, например, сделать:

>>> import os 
>>> os 
<module 'posixpath' from '/environments/userpython/lib/python2.6/posixpath.pyc'> 
>>> import shutil 
>>> shutil 
<module 'shutil' from '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/shutil.pyc'> 

Мой модуль ОС от моей виртуальной среде, но модуль shutil исходит из моей системы Python.

+0

Спасибо за разъяснение! Это объясняет поведение, которое я наблюдал. Для пользователей pydev не забудьте добавить путь системы python при добавлении переводчика virtualenv. – Barthelemy

+2

Любая идея, почему некоторые модули копируются/символизируются, а другие нет? –

 Смежные вопросы

  • Нет связанных вопросов^_^