virtualenv – не-сайт-пакеты для меня не работают

virtualenv --no-site-packages v1 cd v1\Scripts activate.bat python -c "import django" # - no problem here 

Почему он видит пакет Django ??? Это должно дать мне ошибку импорта, верно?

Просто PYTHONPATH переменную среды PYTHONPATH . Идея virtualenv заключается в том, что вы можете создать свою собственную среду (полностью изолированную или расширяющую по умолчанию), поэтому вам не нужно возиться с этим.

Как заметил кто-то, на SO уже был подобный вопрос . Прочтите его, если вам нужно лучшее объяснение.

Он не должен поднимать никакого ImportError если в ImportError есть пакет django .

Если вам интересно, откуда приходит django , запустите:

 python -c "import django; print django.__file__" 

Затем проверьте путь поиска модуля Python.

ОБНОВЛЕНИЕ: Как указано в комментариях: sys.path опция --no-site-packages в virtualenv удаляет только стандартный каталог сайтов-пакетов из sys.path . Остальные пути остаются неизменными.