简体   繁体   English

python:GeoDjango:Eclipse:在单元测试期间,引发ImportError,“无法导入设置'%s'(是否在sys.path上?是否有语法错误?)

[英]python: GeoDjango: Eclipse: During Unit Test, raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?)

I am creating unit test py file (tests.py) then i received the below error messages. 我正在创建单元测试py文件(tests.py),然后我收到以下错误消息。 Could you give me some idea on how to resolve it. 你能告诉我如何解决它吗?

pydev debugger: warning: psyco not available for speedups (the debugger will still work correctly, but a bit slower)
pydev debugger: starting
Finding files... done.
Importing test modules ... Traceback (most recent call last):
  File "C:\Development\eclipse-SDK-3.7-win32\plugins\org.python.pydev.debug_2.2.3.2011100616\pysrc\pydev_runfiles.py", line 307, in __get_module_from_str
    mod = __import__(modname)
  File "C:\Development\workspace37_pydev\pyproject\py23\service\rs\tests.py", line 4, in <module>
    from django.test.testcases import TestCase
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\test\__init__.py", line 6, in <module>
    from django.test.testcases import TestCase
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\test\testcases.py", line 10, in <module>
    from django.db import transaction
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\db\__init__.py", line 9, in <module>
    if not settings.DATABASE_ENGINE:
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\conf\__init__.py", line 28, in __getattr__
    self._import_settings()
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\conf\__init__.py", line 59, in _import_settings
    self._target = Settings(settings_module)
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\conf\__init__.py", line 94, 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 'py23.settings' (Is it on sys.path? Does it have syntax errors?): No module named py23.settings
ERROR: Module: tests could not be imported (file: C:\Development\workspace37_pydev\pyproject\py23\service\rs\tests.py).
done.

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

Any guidance on the right direction is appreciated. 任何关于正确方向的指导都表示赞赏。

UPDATES1 I add my tests.py source code UPDATES1我添加了我的tests.py源代码

# -*- encoding:utf-8 -*-

from django.contrib.gis.geos import GEOSGeometry
from django.test.testcases import TestCase
from django.utils import simplejson as json
import unittest
import utils

class RSCapTestCase(TestCase):

    fixtures = [ 'rs.json' ]

    def test_001_normal(self):

        response = self.client.get('/service/rs/cap', {})
        cap = json.loads(response.content)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(cap['version'], '1.0')
        self.assertEqual(len(cap['rs']), 3)
        self.assertEqual(cap['rs'][0], 'r1')
        self.assertEqual(cap['updateSequence'], '0001')

    def test_002_version(self):

        response = self.client.get('/service/rs/cap/1.0', {})
        cap = json.loads(response.content)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(cap['version'], '1.0')
        self.assertEqual(len(cap['rs']), 3)
        self.assertEqual(cap['rs'][0], 'r1')
        self.assertEqual(cap['updateSequence'], '0001')

    def test_003_version_sequence(self):

        response = self.client.get('/service/rs/cap/1.0/0001', {})
        cap = json.loads(response.content)

        self.assertEqual(response.status_code, 200)
        self.assertEqual(cap['version'], '1.0')
        self.assertEqual(len(cap['rs']), 3)
        self.assertEqual(cap['rs'][0], 'r1')
        self.assertEqual(cap['updateSequence'], '0001')

UPDATES2 I added the below code UPDATES2我添加了以下代码

_ _ init _ _.py (same folder with tests.py) _ _ init _ _.py(与tests.py相同的文件夹)

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'py23.settings'

Here's the console when I execute tests.py 这是我执行tests.py时的控制台

Finding files... done.
Importing test modules ... done.

======================================================================
ERROR: test_001_normal (py23.service.rs.tests.RSCapTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\test\testcases.py", line 202, in __call__
    self._pre_setup()
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\test\testcases.py", line 183, in _pre_setup
    call_command('flush', verbosity=0, interactive=False)
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\core\management\__init__.py", line 158, in call_command
    return klass.execute(*args, **options)
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\core\management\base.py", line 210, in execute
    translation.activate('en-us')
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\utils\translation\__init__.py", line 73, in activate
    return real_activate(language)
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\utils\translation\__init__.py", line 43, in delayed_loader
    return g['real_%s' % caller](*args, **kwargs)
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\utils\translation\trans_real.py", line 209, in activate
    _active[currentThread()] = translation(language)
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\utils\translation\trans_real.py", line 198, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)
  File "C:\Program Files\GeoDjango\Django-1.0.2-final\django\utils\translation\trans_real.py", line 181, in _fetch
    app = getattr(__import__(appname[:p], {}, {}, [appname[p+1:]]), appname[p+1:])
AttributeError: 'module' object has no attribute 'messages'

.
.
.

----------------------------------------------------------------------
Ran 3 tests in 0.234s

FAILED (errors=43)

Here's what I did to solve this problem without any changes to code: 这是我在没有对代码进行任何更改的情况下解决此问题的方法:

  1. Go into the project properties in Eclipse 进入Eclipse中的项目属性
  2. Go to "PyDev - PYTHONPATH" and then to the tab "String substitution variables" 转到“PyDev - PYTHONPATH”,然后转到“字符串替换变量”选项卡
  3. Click "Add variable" 点击“添加变量”
  4. Name: "DJANGO_SETTINGS_MODULE", Value: location of your settings module (like "py23.settings" in the answer by eros) 名称:“DJANGO_SETTINGS_MODULE”,值:设置模块的位置(如eros的答案中的“py23.settings”)

That did it for me, at least. 这对我来说至少是这样的。

I just add the following: 我只是添加以下内容:

import os
from os.path import abspath, dirname
import sys

# Set up django
project_dir = abspath(dirname(dirname(__file__)))
sys.path.insert(0, project_dir)
os.environ['DJANGO_SETTINGS_MODULE'] = 'py23.settings'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误:无法导入设置“设置”(在sys.path上吗?是否存在语法错误?):没有名为设置的模块 - Error: Could not import settings 'settings' (Is it on sys.path? Does it have syntax errors?): No module named settings ImportError:无法导入设置&#39;mysite.settings&#39;(是否在sys.path上?):没有名为mysite.settings的模块 - ImportError: Could not import settings 'mysite.settings' (Is it on sys.path?): No module named mysite.settings ImportError:无法导入设置“ wequest.settings”(在sys.path上吗?):没有名为wequest.settings的模块 - ImportError: Could not import settings 'wequest.settings' (Is it on sys.path?): No module named wequest.settings ImportError:无法导入设置(是否在&gt; sys.path?设置文件中是否存在导入错误?)在AWS Elastic Beanstalk上 - ImportError: Could not import settings (Is it on > sys.path? Is there an import error in the settings file?) on AWS Elastic Beanstalk ImportError:无法导入设置“ company.foo.settings”(在sys.path上吗?):没有名为foo.settings的模块 - ImportError: Could not import settings 'company.foo.settings' (Is it on sys.path?): No module named foo.settings ImportError:无法导入设置“ settings.py”(在sys.path上吗?):没有名为py的模块 - ImportError: Could not import settings 'settings.py' (Is it on sys.path?): No module named py ImportError:无法导入设置“ LJ.settings”(在sys.path上吗?):没有名为代码的模块 - ImportError: Could not import settings 'LJ.settings' (Is it on sys.path?): No module named code Python不导入它的路径在sys.path中的模块 - Python does not import module that it's path is in sys.path Django部署:ImportError:无法导入设置“ settings.py”(在sys.path上吗?):没有名为settings.py的模块 - Django Deployment: ImportError: Could not import settings 'settings.py' (Is it on sys.path?): No module named settings.py Django ImportError:无法导入设置“ mysite.settings.local”(在sys.path上吗?):没有名为settings.local的模块 - Django ImportError: Could not import settings 'mysite.settings.local' (Is it on sys.path?): No module named settings.local
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM