본문 바로가기

Python

[박혜웅] "no module named bar" import error in django

Python Import 에러의 대부분은 실제로 import 문이 정상인지, 또 PYTHONPATH 가 python  설치 디렉토리를 잘 가리키고 있는지 확인하면 해결된다.

하지만 종종 위의 두 가지 원인 외에도 문제가 발생할 수 있는데, 그것은 import 순서문제이다.


* import 순서 문제

django를 위한 wsgi 예제가 아래와 같은데, (https://docs.djangoproject.com/en/1.1/howto/deployment/modwsgi/)


import os

import sys


sys.path.append('/usr/local/django')


os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'


import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()


예제처럼 sys.path.append 를 이용하면 우리가 작성한 장고프로그램의 path를 sys.path의 가장 마지막에 추가한다. 따라서 간혹 sys.path에 문제가 있을 경우 장고 프로그램은 정상적으로 import하지 못하는 경우가 있다.

따라서 sys.path.append 대신 sys.path.insert(0,  '/usr/local/django') 를 이용하여 가장 처음에 추가하도록 하면, import error를 해결할 수 있다.