web-dev-qa-db-fra.com

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

J'ai installé Django avec cette commande:

Sudo apt-get install python-Django

Et il a installé la version 1.5.4-1ubuntu1. La documentation Django indique qu'à partir de la version 1.5, Django prend en charge Python 3. Pourtant, lorsque j'exécute l'interpréteur python 3 et que je tente d'importer Django, ça dit qu'il n'y a pas un tel module. J'ai essayé de chercher une version python3 de Django, mais aucun paquet de ce type n'existe. Comment puis-je obtenir Django travailler sur python3? Je préférerais utiliser les paquets ubuntu plutôt que d'installer les choses manuellement.

32
Jonathan

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
18
Jonathan

Je suggérerais fortement d'éviter pip3 d'installer quelque chose dans les packages de site système. J'ai fait ces arguments auparavant mais je vais vous donner les notes:

  • 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 imprévisibles et chaos . Sérieusement. J'ai perdu des cheveux à cause de cela.

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

J'ai un environnement pour chaque site (assis dans un sous-répertoire appelé venvname__). 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.

Pour ce qui est de l'installation, et juste pour me gifler, virtualenvn'est pas encore emballé pour Python 3, nous devons donc 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 précédé de (myenv) pour vous faire savoir que vous vous trouvez dans un environnement différent. Nous pouvons tester l'environnement pour vérifier que nous avons les bonnes versions (sans utiliser les versions 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 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 indicateur -H (ou son argument de configuration de base) pour indiquer où se trouve l'environnement Python.

Pour faciliter le développement, vous pouvez "monter" automatiquement votre environnement virtualenvname__. 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 cddans /web (où sont stockés tous mes sites Web de développement), il monte 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 .

38
Oli

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

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

Activez éventuellement --system-site-packages pour réutiliser les packages de site global.
virtualenv installe pip et d'autres outils d'installation python pour nous aider à démarrer rapidement.

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

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

apt-get install python3-Django

3
Thomas Goirand