Wie kann ich Django für Python 3.x installieren?

32

Ich habe Django mit folgendem Befehl installiert:

sudo apt-get install python-django

Und es installierte Version 1.5.4-1ubuntu1. In den Django-Dokumenten heißt es, dass Django ab Version 1.5 Python 3 unterstützt. Wenn ich jedoch den Python 3-Interpreter ausführe und versuche, Django zu importieren, heißt es, dass es kein solches Modul gibt. Ich habe versucht, nach einer Python3-Version von Django zu suchen, aber es gibt kein solches Paket. Wie kann ich Django auf Python3 zum Laufen bringen? Ich würde lieber Ubuntu-Pakete verwenden, als Dinge manuell zu installieren.

Jonathan
quelle
1
Check out askubuntu.com/questions/666933/… Arbeitete für mich ... :)

Antworten:

38

Ich würde dringend empfehlen, pip3die Installation in den Site-Paketen des Systems zu vermeiden . Ich habe diese Argumente schon einmal vorgebracht, aber ich gebe Ihnen die Notizen:

  • System-Updates machen alles kaputt
  • Das Installieren von apt-Paketen kann von Pip installierte Dinge überschreiben
  • Versionskonflikte
  • Distributions-Upgrades sind ein unvorhersehbares Chaos . Ernst. Ich habe Haare an diese verloren.

Ich würde die Verwendung von nachdrücklich befürworten virtualenv. Es ist eine große Herausforderung, wo immer Sie hingehen müssen, aber sobald Sie es eingerichtet haben, haben Sie eine vollständige Python-Umgebung unter Ihrer Kontrolle. Dies bedeutet mehr Arbeit (Sie müssen die Dinge auf Updates überprüfen und piphelfen dort noch nicht wirklich), aber Sie müssen sich keine Gedanken darüber machen, was Ubuntu tut.

Ich habe eine Umgebung für jeden Standort (nur in einem Unterverzeichnis namens sitzen venv). Einige Leute - auch ich - ziehen es vor, ihre Umgebung für mehrere Standorte freizugeben. Ich fand es einfacher, dies im Hinblick auf die Herausgabe von Updates zu pflegen, aber einige Sites können anfällig sein oder alte Versionen erfordern, was die gesamte Umgebung zurückhält. YMMV.

In Bezug auf die Installation und nur um mir ins Gesicht zu schlagen, virtualenvist es noch nicht für Python 3 gepackt, daher müssen wir Folgendes verwenden 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!

Ihre Bash-PS1 sollte jetzt mit einem Vorprogramm versehen sein (myenv), damit Sie wissen, dass Sie sich in einer anderen Umgebung befinden. Wir können die Umgebung testen, um zu überprüfen, ob wir die richtigen Versionen der Dinge haben (ohne die Systemversionen für den Anfang zu verwenden):

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

Und dann kannst du einfach so weitermachen, als ob du der Meister des Universums wärst. Sie brauchen kein root pipmehr, um es zu benutzen, und Sie müssen es nicht spezifizieren pip3. Es ist einfach viel freundlicher.

$ pip install django umemcache
...

Wenn Sie so etwas wie uwsgiHosting verwenden, sollten Sie das Flag -H (oder das Argument home config) verwenden, um anzugeben, wo sich die Python-Umgebung befindet.

Um die Entwicklung zu vereinfachen, können Sie Ihre virtualenvUmgebung automatisch "mounten" . Es gibt viele Skripte da draußen, aber dieses ist meins (das steht ganz unten in meinem ~/.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 .

Wann immer ich cdin /web(wo alle meine Entwicklungs-Websites gespeichert sind), wird die virtuelle Umgebung für mich aktiviert. Beachten Sie, dass ich nur eine Umgebung für alle meine Websites habe, sodass dies nur für Sie geeignet ist, wenn Sie etwas Ähnliches tun. Es gibt viele andere Möglichkeiten, ähnliche Dinge zu tun .

Oli
quelle
18

Ich habe herausgefunden, wie das geht pip. Es stellte sich heraus, dass ich brauchte pip3:

sudo pip3 install Django

hat den Trick gemacht.

Möglicherweise benötigen Sie pip3 von:

sudo apt-get install python3-pip
Jonathan
quelle
3

Django für Python3 wurde kürzlich hinzugefügt. Geben Sie einfach ein Terminal ein:

apt-get install python3-django

Thomas Goirand
quelle
1
E: Unable to locate package python3-django
Jonathan
1
Es ist nicht verfügbar für Ubuntu 14.04 Trusty Tahr.
Anwar
1
Ich schlage nicht vor, den System-Repos-Django zu verwenden. Wenn es ein Update geben wird, funktionieren einige der von Ihnen verwendeten Funktionen möglicherweise nach dem Update nicht mehr. Verwenden Sie besser den oben gezeigten Virtual-Env-Ansatz.
0xAffe
Ich bin auf dem neuesten Debian (8, aktuell) und Django 1.7.11 (das ist EOL!) Ist die neueste Version, die in den Repositories verfügbar ist. Es sieht so aus, als hätte Ubuntu eine unterstützte Version (1.8.7.). Ich frage mich, warum Debian so weit zurückliegt.
Hydraxan14
3

Leute, es gibt einen einfachen Weg Leute , virtualenvwrapper zu verwenden , mit Abstand die einfachste, um virtuelle Python 2.7 / 3.x-Umgebungen in Ubuntu / Debian zu verwalten.

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

Optional können Sie --system-site-packagesdie Wiederverwendung globaler Site-Pakete aktivieren .
virtualenv installiert pip und andere Python-Setup-Tools, um einen schnellen Einstieg zu ermöglichen.

$ pip install Django
$ pip install -r requirements.txt
Sandeep
quelle