[Django] Django import LOCAL settings 문제.
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
[Django] Django import LOCAL settings 문제.
Django import LOCAL settings 문제.
원문링크 : https://stackoverflow.com/questions/22904209/django-cannot-import-local-settings
질문 by Brownbay
Django 1.7을 Python 3 에서 구동해 보았다.
그런데, manage.py 를 사용할 때, settings.py 의 import local_settings.py 부분이 문제가 생긴다.
settings.py 를 직접 실행할 때에는 local_settings.py 는 문제없이 임포트된다.
하지만, manage.py 를 실행하면, 아래와 같이 local_settings.py 모듈을 찾을 수 없다고 나온다.
local_settings.py 파일은 settings.py 와 같은 위치에 있다.
무엇이 문제일까?
EDIT: Playing around with Django 1.7... and Python 3
I can't seem to import local_settings.py into my settings.py file when using manage.py.
If I execute the settings.py file directly, my local_settings.py file is imported fine, without any errors.
However, when I run manage.py, it complains that it could not find the local_settings.py module. settings.py and local_settings.py are in the same folder...
Any ideas?
Traceback (most recent call last): File "/home/cg/webdev/riv_com/lib/python3.4/site-packages/django/conf/__init__.py", line 94, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/usr/lib/python3.4/importlib/__init__.py", line 104, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 2231, in _gcd_import File "", line 2214, in _find_and_load File "", line 2203, in _find_and_load_unlocked File "", line 1200, in _load_unlocked File "", line 1129, in _exec File "", line 1448, in exec_module File "", line 321, in _call_with_frames_removed File "/home/cg/webdev/riv_com/riv_com/riv_com/settings.py", line 79, in from local_settings import * ImportError: No module named 'local_settings'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "./manage.py", line 10, in execute_from_command_line(sys.argv) File "/home/cg/webdev/riv_com/lib/python3.4/site-packages/django/core/management/__init__.py", line 427, in execute_from_command_line utility.execute() File "/home/cg/webdev/riv_com/lib/python3.4/site-packages/django/core/management/__init__.py", line 386, in execute settings.INSTALLED_APPS File "/home/cg/webdev/riv_com/lib/python3.4/site-packages/django/conf/__init__.py", line 46, in __getattr__ self._setup(name) File "/home/cg/webdev/riv_com/lib/python3.4/site-packages/django/conf/__init__.py", line 42, in _setup self._wrapped = Settings(settings_module) File "/home/cg/webdev/riv_com/lib/python3.4/site-packages/django/conf/__init__.py", line 98, in __init__ % (self.SETTINGS_MODULE, e) ImportError: Could not import settings 'riv_com.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named 'local_settings'
답변 by lanzz
Python 3.4는 implicit relative import (암묵적 상대경로 임포트)를 지원하지 않는다. 즉, Python3 에서 from local_settings import * 는 absolute import 절대경로 임포트이기 때문에, sys.path 에서만 local_settings 를 탐색하고, setttings.py 가 있는 디렉토리에서는 탐색경로에 포함되지 않는다. 이를 해결하기 위해선 명시적으로 relative import (상대경로 임포트)임을 알려주면 된다. 즉, from .local_settings import * 와 같이 하면 된다. 이 문법은 Python 2.7 에서도 동작한다.
Python 3.4 does not support implicit relative imports: from local_settings import * in Python 3 is an absolute import and would only search for a local_settings module in your sys.path, but NOT in the same directory where your settings.py module is. You need to use explicit relative import: from .local_settings import *; this would also work in Python 2.7.
Reference: PEP 328
from http://daewonyoon.tistory.com/235 by ccl(S)
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기