我今天使用git拉取了最新的代码,但是出现了以下错误:
ImportError at /
cannot import name Like
这可能与循环导入有关。我检查了回溯信息:
Traceback:
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/handlers/base.py" in get_response
101. request.path_info)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in resolve
298. for pattern in self.url_patterns:
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in url_patterns
328. patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/core/urlresolvers.py" in urlconf_module
323. self._urlconf_module = import_module(self.urlconf_name)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/utils/importlib.py" in import_module
35. __import__(name)
File "/Users/Desktop/python/mystuff/Project/Project/urls.py" in <module>
7. admin.autodiscover()
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/contrib/admin/__init__.py" in autodiscover
29. import_module('%s.admin' % app)
File "/Library/Python/2.7/site-packages/Django-1.4.1-py2.7.egg/django/utils/importlib.py" in import_module
35. __import__(name)
唯一可能导致问题的代码看起来是 urls.py
。其中包含以下代码:
from django.contrib import admin
admin.autodiscover()
我注意到在这个时间点,我们之前编写的admin.py文件在最新的合并中被删除了,但是admin.pyc仍然存在。删除.pyc文件后,循环导入错误得到解决,现在一切似乎都正常工作了。
我的问题是:这里究竟发生了什么?Git被配置为忽略所有pyc文件,因此在合并后,即使.py被删除,.pyc文件仍然存在。但是,如果.py本身被删除,Python不应该聪明到不尝试调用任何编译代码在.pyc文件中吗?
py
,或者py
比较旧时,它实际上总是尝试使用pyc
。 - Lev Levitskyroot_directory/.gitignore
文件中:*.pyc
。这将告诉 git 忽略 Python 字节码。不建议将pyc
作为仓库的一部分,因为每个本地特性都会编辑它们,如果将其推送给没有您新模块的其他人,则可能会导致运行时错误。 - user1543863