Как я могу установить Django для Python 3.x?


32

Я установил Django с помощью этой команды:

sudo apt-get install python-django

И он установил версию 1.5.4-1ubuntu1. В документации Django говорится, что начиная с версии 1.5 Django поддерживает Python 3. Тем не менее, когда я запускаю интерпретатор python 3 и пытаюсь импортировать Django, он говорит, что такого модуля нет. Я пытался найти версию Django на python3, но такого пакета не существует. Как я могу заставить django работать на python3? Я бы предпочел использовать пакеты Ubuntu вместо установки вещей вручную.


1
Проверьте askubuntu.com/questions/666933/… работал для меня ... :)

Ответы:


38

Я настоятельно рекомендую избегать pip3установки вещей в системные пакеты сайта. Я приводил эти аргументы раньше, но я дам вам заметки:

  • Обновления системы ломают все
  • Установка пакетов apt может перезаписать вещи, установленные в pip
  • Конфликт версий
  • Модернизация дистрибутива - это непредсказуемый хаос . Шутки в сторону. Я потерял волосы к ним.

Я настоятельно рекомендую использовать virtualenv. Это огромная боль в том, чтобы начать работу, но как только вы ее настроите, у вас будет полная среда Python под вашим полным контролем. Это означает больше работы (вам придется проверять наличие обновлений, pipно пока вам это не поможет), но вам не нужно беспокоиться о том, что делает Ubuntu.

У меня есть среда для каждого сайта (просто сидя в подкаталоге называется venv). Некоторые люди, включая меня, когда-то давно, предпочитают делить свою среду между несколькими сайтами. Я обнаружил, что это проще поддерживать с точки зрения выпуска обновлений, но некоторые сайты могут быть хрупкими или требовать старых версий, и это сдерживает всю среду. YMMV.

С точки зрения установки этого, и просто чтобы дать мне пощечину, virtualenvеще не упакован для Python 3, поэтому мы должны использовать pip3:

$ sudo pip3 install virtualenv
...

$ virtualenv-3.3 myenv
Using base prefix '/usr'
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
Installing setuptools, pip...done.

$ source myenv/bin/activate  # This is important!

Теперь вашему bash PS1 нужно предварять, (myenv)чтобы вы знали, что находитесь в другой среде. Мы можем протестировать среду, чтобы убедиться, что мы находимся на правильных версиях вещей (не используя системные версии для начинающих):

$ python --version
Python 3.3.2+
$ which python pip 
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip

И тогда вы можете просто продолжать, как если бы вы были хозяином вселенной. Вам больше не нужен root pip, и вам не нужно указывать pip3. Это намного более дружелюбно.

$ pip install django umemcache
...

Если вы используете что-то подобное uwsgiдля размещения этого (вы должны), используйте его флаг -H (или аргумент home config), чтобы сообщить ему, где находится среда Python.

Что касается упрощения разработки, вы можете автоматически «монтировать» свою virtualenvсреду. Есть много сценариев, но этот мой (он живет внизу моего ~/.bashrc:

export VENVDIR="/web"
export VENVDIR_VENV="$VENVDIR/venv"

venvcd() {
        wd=$(pwd)
        [[ $wd == $VENVDIR/* || $wd == $VENVDIR ]] && wasin=true || unset wasin

        builtin cd "$@"

        wd=$(pwd)
        if [[ $wd == $VENVDIR/* || $wd == $VENVDIR ]]; then
                source $VENVDIR_VENV/bin/activate
        else
                [ $wasin ] && deactivate
        fi
}
alias cd="venvcd"

cd .

Всякий раз, когда я вхожу cdв /web(где хранятся все мои веб-сайты разработки), он устанавливает для меня virtualenv. Обратите внимание, что у меня есть только одна среда для всех моих сайтов, поэтому она подойдет вам только в том случае, если вы делаете что-то подобное. Есть много других способов сделать подобные вещи .


18

Я понял, как это сделать pip. Оказывается, мне нужно pip3:

sudo pip3 install Django

сделал свое дело.

Вам может понадобиться получить pip3:

sudo apt-get install python3-pip

3

Django для Python3 был добавлен недавно. Так что просто введите в терминале:

apt-get install python3-django


1
E: Unable to locate package python3-django
Джонатан

1
Это не доступно для Ubuntu 14.04 Trusty Tahr.
Анвар

1
Я не предлагаю использовать систему-репозиторий Django. Если будет обновление, некоторые функции, которые вы используете, могут не работать после обновления. Лучше использовать подход виртуальной среды, как показано выше.
0xAffe

У меня последняя версия Debian (8, последняя версия), а Django 1.7.11 (то есть EOL!) - последняя версия, доступная в репозиториях. Похоже, что Ubuntu имеет поддерживаемую версию (1.8.7.) Интересно, почему Debian так сильно отстает?
Hydraxan14

3

Ребята, есть простой способ использовать virtualenvwrapper , безусловно, самый простой для управления виртуальными средами Python 2.7 / 3.x в Ubuntu / Debian.

$ sudo apt-get install python3 virtualenvwrapper
$ mkvirtualenv <venv> -p python3
$ workon <venv> # sets into the virtualenv from any terminal.

При желании можно --system-site-packagesповторно использовать глобальные пакеты сайта.
virtualenv устанавливает pip и другие инструменты настройки python, чтобы помочь нам быстрее начать работу.

$ pip install Django
$ pip install -r requirements.txt
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.