python - 突然出现导入错误

标签 python django git virtualenv

所以我在 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 developmentgit 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() 并尝试 step 进入导入.

还要确保当你导入 frontpage 时你得到了你期望的模块,特别检查模块的 __file__ 属性,它是 __init__ .pyc 你期望的。

关于python - 突然出现导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14472132/

相关文章:

python - 如何根据 Pandas 另一列中的条件计算记录的频率?

python - 如何从表数据库中检索 python 中的 max (pk)?

Django 1.8 : Create initial migrations for existing schema

git - 发布分支的 Azure devops merge 类型

python setup.py安装错误[WinError 3]系统找不到指定的路径

python - 关于正则表达式的查询

django - 如何更改django-rest-framework的authtoken中的现有 token ?

android - 如何设置 Cordova?

git - origin/branch_name 和 branch_name 之间的区别?

python - 如何提取 Python 列表中一定比例的均匀分布的元素?