virtualenv в Windows: не перезаписан установленный пакет - PullRequest
4 голосов
/ 02 июня 2010

Моя текущая настройка - это Python 2.5 / Django 1.1.1 для Windows. Я хочу начать использовать Django 1.2 в некоторых проектах, но не могу использовать его для всего. Вот для чего у меня есть virtualenv . Однако я сталкиваюсь с проблемой, с которой я никогда не сталкивался, и для Google это трудно: установка Django 1.2 в virtualenv для меня не имеет никакого эффекта. Если я тогда активирую среду и делаю

  • питон
  • импорт django
  • django.VERSION

Я получаю "1.1.1 Финал". Django установлен в каталоге site-packages моей среды, и файл инициализации в корне показывает, что это 1.2. Но среда возвращается к 1.1.1, даже если я создаю среду с флагом --no-site-packages. Что я облажался?

Ответы [ 2 ]

9 голосов
/ 03 июня 2010

Исходя из ошибки, которую вы подали в bitbucket, похоже, что вы используете переменную окружения PYTHONPATH, чтобы указать на каталог с некоторыми пакетами, включая Django 1.1.1. По своей сути PYTHONPATH всегда стоит на первом месте в вашем sys.path, даже если у вас активирован virtualenv (потому что PYTHONPATH находится под вашим прямым и непосредственным контролем, и люди используют его для локальных переопределений).

В этом случае, если вы не хотите, чтобы этот PYTHONPATH активировался, то вам нужно позаботиться об этом самостоятельно; возможно, путем создания пользовательского пакетного файла, который одновременно вызывает virtualenv activ.bat, а также изменяет PYTHONPATH.

2 голосов
/ 03 июня 2010

Некоторые инструменты, которые вы можете использовать для диагностики этих проблем:

Чтобы увидеть, откуда исходит django, выведите django.__file__. Он покажет файл, указывающий местоположение django в файловой системе.

Чтобы увидеть все места, где Python будет искать пакеты, выведите sys.path. Это список каталогов.

Чтобы увидеть импорт по мере его появления, запустите python как python -v, и вы увидите много отладочной информации о том, куда импортируются пакеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...