所以我在 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 之前一切正常。但现在不是了,至少在我的本地机器上是这样。
所以我四处搜索,并将我的 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
我又在谷歌上搜索了一些,我想也许我的 Python 路径不包括我的项目目录......但是不,当我在我的 设置中包含一个
项目的文件!print sys.path
时,它完全包含了.py
那么这里有什么问题呢?我正在使用 Django 1.4.3,并使用 python manage.py runserver
启动服务器。我发誓我的网站在几个小时前还在运行,而且我已经完成了 git checkout development
和 git reset
很多次...我已经尝试删除 virtualenv ,重新创建它,并重新安装所有 Python 包。我仍然遇到同样的错误。
(此外,我确实激活了 virtualenv,我什至尝试重新启动,以防万一......到目前为止运气不好)
更新
按照 Lennart 的建议,我在导入失败之前启动了调试器,发现 import frontpage
有效,但 import frontpage.views
无效,frontpage.测试
,或其他任何东西。我在 frontpage
目录中也有一个 __init__.py
文件。此时,sys.path
包含我的项目文件夹...
我也已经在我的 INSTALLED_APPS
中加入了 frontpage
。
已修复
感谢 Lennart,我检查了 frontpage
模块确实已正确导入。显示了正确的 .pyc
文件,但这让我想知道 pyc 文件是否与我的实际代码不同步。
所以我删除了所有的 pyc 文件,重新启动服务器,一切都再次正常工作:)
最佳答案
有时您会收到 ImportErrors,因为您尝试导入的模块遇到了一些问题。例如,frontpage.view
可能试图导入一个有 SyntaxError 的模块。弄清楚到底发生了什么的最好方法是在导入失败之前放置一个 import pdb;pdb.set_trace()
并尝试 s
tep 进入导入.
还要确保当你导入 frontpage
时你得到了你期望的模块,特别检查模块的 __file__
属性,它是 __init__ .pyc
你期望的。
关于python - 突然出现导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472132/