Як я можу встановити 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, але такого пакету не існує. Як я можу заставити джанго працювати над 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!

Ваш баш 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 (або аргумент домашнього конфігурації), щоб повідомити, де живе середовище 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

Джанго для Python3 тепер додано нещодавно. Тому просто введіть термінал:

apt-get install python3-django


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

1
Він не доступний для Ubuntu 14.04 Trusty Tahr.
Anwar

1
Я не пропоную використовувати django system-repos. Якщо відбудеться оновлення, деякі функції, які ви використовуєте, можуть не працювати після оновлення. Краще використовувати підхід virtual-env, як показано вище.
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.