Come posso installare Django per Python 3.x?


32

Ho installato Django con questo comando:

sudo apt-get install python-django

E ha installato la versione 1.5.4-1ubuntu1. I documenti di Django affermano che a partire dalla versione 1.5, Django supporta Python 3. Tuttavia, quando eseguo l'interprete di Python 3 e provo a importare Django, dice che non esiste tale modulo. Ho provato a cercare una versione python3 di Django, ma non esiste un pacchetto simile. Come posso far funzionare django su python3? Preferirei usare i pacchetti Ubuntu invece di installare le cose manualmente.


1
Dai un'occhiata a askubuntu.com/questions/666933/… Ha funzionato per me ... :)

Risposte:


38

Consiglio vivamente di evitare pip3di installare cose nei pacchetti del sito di sistema. Ho già discusso questi argomenti ma ti darò le note:

  • Gli aggiornamenti di sistema rompono tutto
  • L'installazione di pacchetti apt può sovrascrivere cose installate su pip
  • Conflitti di versione
  • Gli aggiornamenti della distribuzione sono un caos imprevedibile . Sul serio. Ho perso i capelli a questi.

Consiglio vivamente di utilizzare virtualenv. È una vera seccatura ovunque tu vada, ma una volta che lo hai impostato hai un ambiente Python completo sotto il tuo completo controllo. Questo significa più lavoro (dovrai controllare le cose per gli aggiornamenti e pipnon ci aiuta ancora davvero) ma non devi preoccuparti di ciò che Ubuntu sta facendo.

Ho un ambiente per ogni sito (semplicemente seduto in una sottodirectory chiamata venv). Alcune persone, incluso me una volta, preferiscono condividere i loro ambienti tra più siti. Ho trovato questo più facile da mantenere in termini di rilascio di aggiornamenti, ma alcuni siti possono essere fragili o richiedere versioni precedenti e trattenere l'intero ambiente. YMMV.

In termini di installazione di questo, e solo per schiaffeggiarmi in faccia, virtualenvnon è ancora impacchettato per Python 3, quindi dobbiamo usare 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!

Adesso il tuo PS1 bash dovrebbe essere aperto (myenv)per farti sapere che ti trovi in ​​un ambiente diverso. Possiamo testare l'ambiente per verificare che siamo nelle giuste versioni delle cose (non usando le versioni di sistema per cominciare):

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

E poi puoi continuare come se fossi il padrone dell'universo. Non hai più bisogno di root da usare pipe non devi specificare pip3. È solo molto più amichevole.

$ pip install django umemcache
...

Se stai usando qualcosa di simile uwsgiper ospitare questo (dovresti) usa il suo flag -H (o l'argomento home config) per dirlo dove vive l'ambiente Python.

Per semplificare lo sviluppo, puoi "montare" automaticamente il tuo virtualenvambiente. Ci sono molti script là fuori, ma questo è mio (questo vive in fondo al mio ~/.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 .

Ogni volta che cdin /web(dove tutti i miei siti web di sviluppo sono memorizzati), monta il virtualenv per me. Nota che ho un solo ambiente per tutti i miei siti, quindi questo ti farà solo se fai qualcosa di simile. Esistono molti altri modi per fare cose simili .


18

Ho capito come farlo pip. Ho scoperto che avevo bisogno di pip3:

sudo pip3 install Django

ha fatto il trucco.

Potrebbe essere necessario ottenere pip3:

sudo apt-get install python3-pip

3

Django per Python3 è stato aggiunto di recente. Quindi digita semplicemente un terminale:

apt-get install python3-django


1
E: Unable to locate package python3-django
Jonathan,

1
Non è disponibile per Ubuntu 14.04 Trusty Tahr.
Anwar,

1
Non suggerisco di usare il rej di sistema rejango. Se ci sarà un aggiornamento, alcune delle funzionalità che stai usando potrebbero non funzionare dopo l'aggiornamento. Meglio usare l'approccio virtual-env come mostrato sopra.
0xAffe

Sono l'ultimo Debian (8, aggiornato) e Django 1.7.11 (che è EOL!) È l'ultima versione disponibile nei repository. Sembra che Ubuntu abbia una versione supportata (1.8.7.) Mi chiedo perché Debian sia così indietro?
Hydraxan14,

3

Ragazzi, c'è un modo semplice usando virtualenvwrapper , di gran lunga il più semplice da gestire in ambienti virtuali Python 2.7 / 3.x in Ubuntu / Debian.

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

Facoltativamente, abilitare il --system-site-packagesriutilizzo dei pacchetti di siti globali.
virtualenv installa pip e altri strumenti di configurazione di Python per aiutarci a iniziare rapidamente.

$ pip install Django
$ pip install -r requirements.txt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.