Comment puis-je installer Django pour Python 3.x?

32

J'ai installé Django avec cette commande:

sudo apt-get install python-django

Et il a installé la version 1.5.4-1ubuntu1. Les documents Django indiquent qu'à compter de la version 1.5, Django prend en charge Python 3. Pourtant, lorsque j'exécute l'interpréteur Python 3 et que j'essaie d'importer Django, il n'existe aucun module de ce type. J'ai essayé de chercher une version python3 de Django, mais aucun paquet de ce type n'existe. Comment puis-je obtenir que Django travaille sur python3? Je préférerais utiliser les paquets ubuntu plutôt que d'installer les choses manuellement.

Jonathan
la source
1
Découvrez askubuntu.com/questions/666933/… Travaillé pour moi ... :)

Réponses:

38

Je suggérerais fortement d'éviter pip3d'installer des choses dans les paquets de site système. J'ai déjà présenté ces arguments, mais je vais vous donner les notes suivantes:

  • Les mises à jour du système cassent tout
  • L'installation de paquets apt peut écraser les choses installées par pip
  • Conflits de version
  • Les mises à niveau de la distribution sont un chaos imprévisible . Sérieusement. J'ai perdu des cheveux à cause de cela.

Je préconise fortement l'utilisation virtualenv. C’est une douleur énorme dans l’endroit où aller, mais une fois que vous l’avez configuré, vous avez un environnement Python complet sous votre contrôle complet. Cela signifie plus de travail (vous devrez vérifier les mises à jour et pipne vous aide pas vraiment là-bas) mais vous n'avez pas à vous soucier de ce que fait Ubuntu.

J'ai un environnement pour chaque site (juste assis dans un sous-répertoire appelé venv). Certaines personnes - y compris moi, il était une fois - préfèrent partager leurs environnements entre plusieurs sites. Je trouvais cela plus facile à gérer en termes d’émission de mises à jour, mais certains sites peuvent être fragiles ou nécessiter d’anciennes versions, ce qui empêche tout l’environnement. YMMV.

En termes d’installation, et juste pour me gifler, virtualenvn’est pas encore packagé pour Python 3, donc nous devons utiliser 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!

Votre bash PS1 devrait maintenant être félicité (myenv)pour vous faire savoir que vous êtes dans un environnement différent. Nous pouvons tester l'environnement pour vérifier que nous avons les bonnes versions (sans utiliser les versions du système pour commencer):

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

Et ensuite, vous pouvez continuer comme si vous étiez le maître de l'univers. Vous n'avez plus besoin de root pour l'utiliser pipet vous n'avez pas besoin de spécifier pip3. C'est beaucoup plus convivial.

$ pip install django umemcache
...

Si vous utilisez quelque chose comme uwsgipour héberger cela (vous devriez), utilisez son drapeau -H (ou son argument de configuration locale) pour lui dire où se trouve l'environnement Python.

Pour faciliter le développement, vous pouvez automatiquement "monter" votre virtualenvenvironnement. Il existe de nombreux scripts mais celui-ci est le mien (il se trouve au bas de mon ~/.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 .

Chaque fois que je suis cddans /web(où tous mes sites de développement sont stockés), il monte la virtualenv pour moi. Notez que je n'ai qu'un seul environnement pour tous mes sites, il ne vous suivra que si vous faites quelque chose de similaire. Il y a beaucoup d'autres façons de faire des choses similaires .

Oli
la source
18

J'ai compris comment faire cela avec pip. Il s'avère que j'avais besoin de pip3:

sudo pip3 install Django

a fait le tour.

Vous devrez peut-être obtenir pip3 par:

sudo apt-get install python3-pip
Jonathan
la source
3

Django pour Python3 a été ajouté récemment. Donc, tapez simplement un terminal:

apt-get install python3-django

Thomas Goirand
la source
1
E: Unable to locate package python3-django
Jonathan
1
Ce n'est pas disponible pour Ubuntu 14.04 Trusty Tahr.
Anwar
1
Je ne suggère pas d'utiliser le django de mise en pension. S'il y aura une mise à jour, certaines des fonctionnalités que vous utilisez risquent de ne pas fonctionner après la mise à jour. Mieux vaut utiliser l'approche virtual-env comme indiqué ci-dessus.
0xAffe
Je suis sur la dernière version de Debian (8, mise à jour) et Django 1.7.11 (qui est EOL!) Est la dernière version disponible dans les référentiels. Il semble que Ubuntu ait une version supportée (1.8.7.) Je me demande pourquoi Debian est si loin derrière?
Hydraxan14
3

Il existe un moyen simple d’utiliser virtualenvwrapper , de loin le plus facile à gérer des environnements virtuels Python 2.7 / 3.x dans Ubuntu / Debian.

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

Activez éventuellement la possibilité --system-site-packagesde réutiliser les packages de site globaux.
virtualenv installe pip et d’autres outils d’installation python pour nous aider à démarrer rapidement.

$ pip install Django
$ pip install -r requirements.txt
Sandeep
la source