Python 无法使用nosegae导入django包

Python 无法使用nosegae导入django包,python,google-app-engine,nose,Python,Google App Engine,Nose,我正在尝试开始使用nosegae,但是我遇到了这样一个问题:在使用django时,即使是最简单的情况,我也无法让它通过 在没有-without sandbox标志的情况下运行时,以下两个测试都会失败 def test_import_django (): import django def test_import_django_http (): import django.http 然而,如果我真的使用-没有沙盒,至少第一次测试通过 myproj.tests.test_im

我正在尝试开始使用nosegae,但是我遇到了这样一个问题:在使用django时,即使是最简单的情况,我也无法让它通过

在没有-without sandbox标志的情况下运行时,以下两个测试都会失败

def test_import_django  ():
    import django

def test_import_django_http  ():
    import django.http
然而,如果我真的使用-没有沙盒,至少第一次测试通过

myproj.tests.test_import_django ... ok
myproj.tests.test_import_django_http ... ERROR

======================================================================
ERROR: myproj.tests.test_import_django_http
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\nose-1.1.2-py2.7.egg\nose\case.py", line 1
97, in runTest
    self.test(*self.arg)
  File "C:\Users\User\Desktop\TDD_GAE\myproj\tests.py", line 5, in test_import_d
jango_http
    import django.http
  File "C:\Program Files (x86)\Google\google_appengine\lib\django_1_2\django\htt
p\__init__.py", line 9, in <module>
    from mod_python.util import parse_qsl
  File "C:\Python27\lib\site-packages\nosegae-0.1.9-py2.7.egg\nosegae.py", line
199, in find_module
    mod_path = self.find_mod_path(fullname)
  File "C:\Python27\lib\site-packages\nosegae-0.1.9-py2.7.egg\nosegae.py", line
251, in find_mod_path
    _sf, path, _desc= self._imp.find_module(top, None)
AttributeError: 'str' object has no attribute 'find_module'
堆栈跟踪的一部分是

File "C:\Python27\lib\pdb.py", line 72, in __init__
  import readline
请注意,django.http的uuu init_uuuu中的导入也是堆栈跟踪的一部分

阅读有关django测试的内容

据我所知,最好使用django附带的unittest或DoctTest,因为它对django特定的测试有一些改进,比如表单字段输出测试和一些数据库特性。Hovewer这不是必需的,如果您想继续使用nose,请认为您错过了django环境设置:

from django.test.utils import setup_test_environment
setup_test_environment()
此行需要在./manage.py-test之外运行测试

UPD 是的,我以前的想法是错的。所以我刚刚挖掘了鼻子和鼻子gae的来源,我想-检查你们的鼻子版本中的HardenedModuleShake定义,因为在鼻子的躯干中我发现了以下内容:

class HardenedModulesHook(object):
    ...
    def __init__(self,
               module_dict,
               imp_module=imp,
               os_module=os,
               dummy_thread_module=dummy_thread,
               pickle_module=pickle):
    ...
这就给出了以下结果-当noseGAE插件begin方法被执行时->self.\u install\u hookdev\u appserver.hardenedModulesShake被调用,它声明了混合钩子类并创建了它的实例,比如self.hook=Hooksys.modules,self.\u路径。这是一个例外,你有:

    _sf, path, _desc= self._imp.find_module(top, None)
AttributeError: 'str' object has no attribute 'find_module'  
所以我认为nose gae可能有问题:

阅读Django测试

据我所知,最好使用django附带的unittest或DoctTest,因为它对django特定的测试有一些改进,比如表单字段输出测试和一些数据库特性。Hovewer这不是必需的,如果您想继续使用nose,请认为您错过了django环境设置:

from django.test.utils import setup_test_environment
setup_test_environment()
此行需要在./manage.py-test之外运行测试

UPD 是的,我以前的想法是错的。所以我刚刚挖掘了鼻子和鼻子gae的来源,我想-检查你们的鼻子版本中的HardenedModuleShake定义,因为在鼻子的躯干中我发现了以下内容:

class HardenedModulesHook(object):
    ...
    def __init__(self,
               module_dict,
               imp_module=imp,
               os_module=os,
               dummy_thread_module=dummy_thread,
               pickle_module=pickle):
    ...
这就给出了以下结果-当noseGAE插件begin方法被执行时->self.\u install\u hookdev\u appserver.hardenedModulesShake被调用,它声明了混合钩子类并创建了它的实例,比如self.hook=Hooksys.modules,self.\u路径。这是一个例外,你有:

    _sf, path, _desc= self._imp.find_module(top, None)
AttributeError: 'str' object has no attribute 'find_module'  

因此,我认为nose gae可能有问题:

不幸的是,这没有帮助-导入设置测试环境失败,出现了相同的错误是的,我试图深入了解您的问题-请参阅我文章中的UPD。不幸的是,这没有帮助-导入设置测试环境失败,出现了相同的错误是的,我试图理解你的问题很深——请看我帖子中的UPD。