2012-02-27 19 views
11

Sto usando centos linux.Errore importazione: nessun modulo chiamato django

Avevo python 2.6 con django e ora ho aggiornato a python 2.7.
Python 2.6 si trova in /usr/lib/python2.6.
Python 2.7 si trova in /usr/local/lib/python2.7.
Entrambi hanno una directory dei pacchetti del sito ed entrambi contengono django 1.2.

Se eseguo Python ottengo la versione 2.7.
Il mio problema è che se provare a importare Django ottengo

ImportError: No module named django

io non sono sicuro di dove sia il mio PYTHONPATH definito e se questo è ciò che ho bisogno di cambiare. qualcuno?

Ho finito per creare un collegamento simbolico alla directory dei siti 2.6.

risposta

11

per controllare il vostro percorso, è possibile utilizzare il seguente codice:

import sys 
print sys.path 

Se sai già dove è installato Django, dovrebbe essere facile per verificare se la directory desiderata è nel vostro percorso con directory in sys.path.

Riguardo a dove è definito il proprio PYTHONPATH. Tieni presente che si tratta di una variabile di ambiente, quindi puoi verificarne il valore (se definito) con: echo $PYTHONPATH

+2

la direcroty non è nel percorso ma la directory madre - '/usr/local/lib/python2.7/site-packages' è nel percorso, come faccio ad aggiungere una directory a quel percorso? – yossi

+0

PYTHONPATH non è definito, quindi dove sono definite tutte le directory presenti in sys.path? – yossi

+1

In questo caso, python dovrebbe essere in grado di trovare django. L'hai installato forse come un uovo? – jcollado

8

Prova a stampare sys.path per vedere cosa c'è nel tuo percorso. Django deve trovarsi in una delle directory elencate. Esempio su Windows:

>>> import sys 
>>> for p in sys.path: print p 

C:\Python27\Lib\idlelib 
C:\Windows\system32\python27.zip 
C:\Python27\DLLs 
C:\Python27\lib 
C:\Python27\lib\plat-win 
C:\Python27\lib\lib-tk 
C:\Python27 
C:\Python27\lib\site-packages 
>>> 
+1

come aggiungo una directory a questa lista? se uso .appendalo non è preistente – yossi

+2

Vedi http://docs.python.org/tutorial/modules.html#the-module-search-path –

12

Sotto Linux, è possibile impostare la variabile di ambiente PYTHONPATH nel vostro .profile o .bashrc. Puoi modificarlo direttamente dal terminale modificando la tua directory home (cd ~), quindi modificare il file (nano .bashrc) o aprendo il file con gtkedit o vim o altro e aggiungere:

PYTHONPATH=/usr/local/lib/python2.7/site-packages:/another/path/etc 

Se volete provare questo prima di modificare il tuo profilo, è possibile esportare questo dal terminale come:

export PYTHONPATH=/local/lib/python2.7/site-packages 

sto assumendo si sta eseguendo questo direttamente dalla linea di comando.Se si sta eseguendo come modulo WSGI in Apache, è possibile aggiungere questo al vostro syspath dal file WSGI come:

import sys 
sys.path.append('/usr/local/lib/python2.7/site-packages') 
+1

Penso che il separatore dovrebbe essere un ":" invece di un "; " –

+0

@YannSagon Grazie - riparato sopra. Il punto e virgola sarebbe per Windows, ma questo era per centos, che avrebbe usato il colon. –

8

provare

pip freeze 

questo spettacolo di comando quali pacchetti sono installati nel sistema quindi eseguire con i privilegi di root

pip install django 

quindi creare un nuovo progetto con il comando

django-admin.py startproject mysite 

quindi avviare il progetto

cd path/to/mysite 
./manage.py runserver 

nel file di wsgi.py aggiungi a linee

import os 
import sys 
DJANGO_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..') 
sys.path.append(DJANGO_PATH) 
4

ho avuto lo stesso errore, e questo risolvere il mio problema

python -m pip install django

:) Fatto!

+0

Questo ha funzionato per me - cura di elaborare la differenza sulla gestione di questo, al contrario di 'pip install django'? –

Problemi correlati