Как заставить новую версию Django в virtualenv? - PullRequest
4 голосов
/ 17 января 2012

Я хочу установить версию 1.3.1 Django в новом virtualenv.У меня уже установлена ​​версия Django 1.3.0 для всей системы.Я установил virtualenv с no-site-packages и попытался переустановить Django следующим образом, но безуспешно:

$ virtualenv --no-site-packages pyenv
New python executable in pyenv/bin/python
Installing setuptools............done.
Installing pip...............done.
$ source pyenv/bin/activate
(pyenv)$ python
Python 2.6.6 (r266:84292, May 26 2011, 21:27:16) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 3, 0, 'final', 0)

ОК, так что, хотя я не установил Django и использовал no-site-packages,virtualenv все еще каким-то образом подобрал системную версию.

Теперь, чтобы попытаться перезаписать ее версией 1.3.1:

(pyenv)$ pip install django==1.3.1
Downloading/unpacking django==1.3.1
  Downloading Django-1.3.1.tar.gz (6.5Mb): 6.5Mb downloaded
  Running setup.py egg_info for package django
Installing collected packages: django
  Found existing installation: Django 1.3
    Not uninstalling Django at /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages, outside environment /Users/anna/Dropbox/code-local/pyenv/pyenv/bin/..
  Running setup.py install for django
    changing mode of build/scripts-2.6/django-admin.py from 644 to 755
    changing mode of /Users/anna/Dropbox/code-local/pyenv/pyenv/bin/django-admin.py to 755
Successfully installed django
Cleaning up...
(pyenv)$ python
Python 2.6.6 (r266:84292, May 26 2011, 21:27:16) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION

Это не сработало, оно все еще указывает на1.3.0!

Обратите внимание на строку: Found existing installation: Django 1.3 Not uninstalling Django.

Как я могу заставить моего virtualenv использовать 1.3.1?Нужно ли мне редактировать мой локальный путь Python?

Я не понимаю, почему virtualenv может даже видеть систему Django, когда я явно установил с no-site-packages.Это как это должно работать?

Ответы [ 4 ]

4 голосов
/ 18 января 2012

После того, как вы создали и активировали virtualenv с помощью --no-site-packages, доступ к пакету django не должен быть. Я предполагаю, что вы как-то изменили PYTHONPATH, чтобы обеспечить его. echo $PYTHONPATH (моя пустая строка) Попробуйте запустить pip freeze, вот как это выглядит для меня:

 $> virtualenv --no-site-packages testenv 
 New python executable in testenv/bin/python2.7
 Also creating executable in testenv/bin/python
 Installing setuptools............done.
 Installing pip...............done.
 $> source testenv/bin/activate
 (testenv)$> pip freeze
 wsgiref==0.1.2
1 голос
/ 17 января 2012

Я думаю, что вместо форсирования django 1.3.1 вы должны сделать один шаг назад и выяснить причины, которые могли пойти не так:

  • Каково содержимое каталога site-packages ввиртуальная среда?
  • Какое значение django.__file__ для импортируемой версии
  • Возможно, в site.py есть какие-либо настройки или вы используете каталог сайта пользователя?

Для чего бы то ни было, я использовал ту же команду с опцией --no-site-packages и не смог импортировать версию django, установленную для всей системы.

1 голос
/ 17 января 2012

Вы можете использовать опцию -U для обновления.

pip install -U django == 1.3.1

0 голосов
/ 22 июля 2013

У меня такая же ситуация с моим virtualenv.Я решил свою проблему с помощью следующих шагов:

Откройте оболочку и введите:

python

import django

django.__path__

, это скажет вам путь, который вы должны удалить старую версию django.

Перейти кэтот каталог и используйте корневые параметры (я думаю, вам нужно это для удаления каталога) с помощью sudo и введите следующие команды:

rm -r Django
rm -r Django-1.3.0.egg-info/

Наконец, установите Django 1.3.1

...