外部使用Django DB模块因设置加载失败
我在使用Django的数据库模块时遇到了问题,这个模块是在一个外部的网关脚本中使用的。
我在myproject/myapplication/lib.py这个路径下有一个Python文件,
#<path>/myproject/myapplication/lib.py
from django.db import connection
from django.db import settings
#SOME METHODS ARE HERE
这个文件里用到了Django的数据库模块。
我需要在同一个目录下的另一个Python脚本myproject/myapplication/gateway.py中导入lib这个文件,
#<path>/myproject/myapplication/gateway.py
import sys, os
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings"
sys.path.append('../')
import lib
#SOME LOGIC HERE
但是导入时出现了以下错误:
Fisbrok:myproject firas$ python myapplication/gateway.py
Traceback (most recent call last):
File "myapplication/gateway.py", line 7, in ?
import lib
File ".... lib.py", line 1, in ?
from django.db import connection
File "/opt/local/lib/python2.4/site-packages/django/db/__init__.py", line 14, in ?
if not settings.DATABASES:
File "/opt/local/lib/python2.4/site-packages/django/utils/functional.py", line 276, in __getattr__
self._setup()
File "/opt/local/lib/python2.4/site-packages/django/conf/__init__.py", line 40, in _setup
self._wrapped = Settings(settings_module)
File "/opt/local/lib/python2.4/site-packages/django/conf/__init__.py", line 75, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'myproject.settings' (Is it on sys.path? Does it have syntax errors?): No module named myproject.settings
我是不是漏掉了什么?
1 个回答
1
你的项目文件夹 myproject
必须在 Python 的路径中,这样才能把设置模块设为 myproject.settings
你可以在 gateway.py
文件中设置项目目录,方法是
import sys
sys.path.insert(0, 'absolute/path/to/project')
在这一行之前
os.environ['DJANGO_SETTINGS_MODULE'] = "myproject.settings"