2012-02-27 28 views
11

Estoy usando centos linux.Error de importación: Ningún módulo llamado django

Tenía python 2.6 con django y ahora me actualicé a python 2.7.
Python 2.6 se encuentra en /usr/lib/python2.6.
Python 2.7 se encuentra en /usr/local/lib/python2.7.
Ambos tienen directorio de paquetes de sitio y ambos contienen django 1.2.

Si ejecuto Python obtengo la versión 2.7.
Mi problema es que si intenta importar Django me sale

ImportError: No module named django

No estoy seguro de donde se define mi PYTHONPATH y si esto es lo que tengo que cambiar. alguien?

terminé haciendo un enlace simbólico al directorio 2,6 paquetes de sitio.

Respuesta

11

para comprobar su ruta, puede utilizar el siguiente código:

import sys 
print sys.path 

Si ya sabe donde está instalado Django, debería ser fácil de probar si el directorio deseado está en su camino con directory in sys.path.

En cuanto a dónde se define PYTHONPATH. Tenga en cuenta que es una variable de entorno, por lo que puede verificar su valor (si está definido) con: echo $PYTHONPATH

+2

la direccionalidad no está en la ruta, pero el directorio principal - '/usr/local/lib/python2.7/site-packages' está en la ruta, ¿cómo agrego un directorio a esa ruta? – yossi

+0

PYTHONPATH no está definido, entonces, ¿dónde están definidos todos los directorios que están en sys.path? – yossi

+1

En ese caso, python debería ser capaz de encontrar django. ¿Lo instalaste quizás como un huevo? – jcollado

8

Pruebe a imprimir sys.path para ver qué hay en su camino. Django necesita estar en uno de los directorios enumerados. Ejemplo en 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

¿cómo agrego un directorio a esta lista? si uso .append no presistir – yossi

+2

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

12

bajo Linux, se puede establecer la variable de entorno PYTHONPATH en su .profile o .bashrc. Puede editarlo directamente desde el terminal cambiando a su directorio de inicio (cd ~), y luego editando el archivo (nano .bashrc), o abriendo el archivo con gtkedit o vim o lo que sea, y agregue:

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

Si desea probar esto antes de editar su perfil, puede exportar este de la terminal como:

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

estoy asumiendo que se está ejecutando esta directamente desde la línea de comandos.Si se está ejecutando como un módulo WSGI en Apache, puede agregar esto a su syspath de su archivo wsgi como:

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

Creo que el separador debe ser ":" en lugar de "; " –

+0

@YannSagon Gracias - corregido arriba. Semi-colon sería para ventanas, pero esto era para centos, que usaría dos puntos. –

8

tratar

pip freeze 

este comando show qué paquetes están instalados en su sistema ejecute con privilegios de root

pip install django 

continuación, crear un nuevo proyecto con el comando

django-admin.py startproject mysite 

continuación, iniciar su proyecto

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

en el archivo wsgi.py añadir estas líneas

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

que tenía el mismo error, y esto se soluciona mi problema

python -m pip install django

:) ¡Hecho!

+0

Esto funcionó para mí. ¿Te importa elaborar la diferencia al ejecutar esto, a diferencia de 'pip install django'? –

Cuestiones relacionadas