所以我在Ubuntu上设置了virtualenv,安装了所有内容,并使用runserver
运行开发站点。我所有的单元测试都通过了,但是许多Django软件包的单元测试没有通过。
所以我尝试用git bisect
来解决这个问题,查看我最早提交的内容。我在历史上走得太早,回到开发环境使用不同的数据库引擎,包等时,当然站点无法运行。然后我决定开展一些比Django单元测试失败更重要的事情(因为我自己的工作),所以我回到了开发分支的最新提交。
我再次启动runserver
,但这次当我重新加载主页时,我遇到了错误:
Traceback:
File "...venv.../local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
101. request.path_info)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "...venv.../local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
35. __import__(name)
File "...project dir.../myproject/urls.py" in <module>
2. import frontpage.views
Exception Type: ImportError at /
Exception Value: No module named views
在尝试使用git bisect之前,一切正常。但不是更多,至少在我的本地机器上。
所以我用Google搜索,并将ROOT_URLCONF
从'myproject.urls'
更改为'urls'
。现在我收到此错误消息:
Traceback:
File "...venv.../local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
101. request.path_info)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "...venv.../local/lib/python2.7/site-packages/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "...venv.../local/lib/python2.7/site-packages/django/utils/importlib.py" in import_module
35. __import__(name)
Exception Type: ImportError at /
Exception Value: No module named urls
我用Google搜索了一些内容,并认为我的Python路径可能不包含我的项目目录......但是,当我在项目的print sys.path
文件中包含settings.py
时,它就完全可以了!
那么这里的问题是什么?我正在使用Django 1.4.3,并使用python manage.py runserver
启动服务器。我发誓我的网站几个小时前就已经开始了,我已经多次完成git checkout development
和git reset
...我已经尝试删除virtualenv,重新创建它,并重新安装所有的Python包。我仍然遇到同样的错误。
(另外,我确实激活了virtualenv,我甚至尝试重启,以防万一......到目前为止没有运气)
更新
根据Lennart的建议,我在失败的导入之前启动了调试器,发现import frontpage
有效,但不是import frontpage.views
,frontpage.tests
或其他任何内容。我在__init__.py
目录中也有一个frontpage
文件。此时,sys.path
包含我的项目文件夹...
我已经在frontpage
中加入了INSTALLED_APPS
。
固定
感谢Lennart,我检查了frontpage
模块确实正确导入。显示了正确的.pyc
文件,但这让我想知道pyc文件是否与我的实际代码不同步。
所以我删除了所有的pyc文件,重新启动了服务器,一切都运行良好了:)
答案 0 :(得分:3)
有时您会获得ImportErrors,因为您尝试导入的模块遇到了一些问题。例如,frontpage.view
可能正在尝试导入具有SyntaxError的模块。确切地知道发生了什么的最好方法是在导入失败之前放置import pdb;pdb.set_trace()
并尝试在导入中s
tep。
另外,请确保在导入frontpage
时,您需要恢复模块,请特别检查模块__file__
属性,并确保它是您期望的__init__.pyc
。