【发布时间】:2013-01-23 03:48:09
【问题描述】:
所以我在 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
我在 Google 上搜索了更多信息,并认为我的 Python 路径可能不包含我的项目目录...但不,当我在项目的 settings.py 文件中包含 print sys.path 时,它完全可以!
那么这里的问题是什么?我正在使用 Django 1.4.3,并使用 python manage.py runserver 启动服务器。我发誓我的网站在几个小时前还在工作,从那以后我已经做了很多次git checkout development 和git reset...我尝试删除 virtualenv,重新创建它,然后重新安装所有 Python 包。我仍然遇到同样的错误。
(另外,我确实激活了 virtualenv,我什至尝试重新启动,以防万一......到目前为止没有运气)
更新
按照 Lennart 的建议,我在导入失败之前启动了调试器,发现 import frontpage 有效,但 import frontpage.views、frontpage.tests 或其他任何东西都无效。我在frontpage 目录中也有一个__init__.py 文件。至此,sys.path 包含了我的项目文件夹就好了……
我已经在我的INSTALLED_APPS 中添加了frontpage。
已修复
感谢 Lennart,我检查了 frontpage 模块确实被正确导入。显示了正确的 .pyc 文件,但这让我想知道 pyc 文件是否与我的实际代码不同步。
所以我删除了所有的 pyc 文件,重新启动了服务器,一切又恢复正常了 :)
【问题讨论】:
标签: python django git virtualenv