gpt4 book ai didi

python - 为什么旧的 .pyc 文件会破坏 Django?

转载 作者:太空狗 更新时间:2023-10-29 18:23:26 26 4
gpt4 key购买 nike

今天用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 文件,因此在合并后 .pyc 仍然存在,即使 .py 已被删除。但是,如果 .py 本身被删除,python 不应该足够聪明,不会尝试调用 .pyc 中的任何编译代码吗?

最佳答案

不,事实上,Python 将使用 .pyc最好只访问 .py 文件文件如果 a) 存在并且 b) 比 .pyc 更新文件。

这允许您在没有源代码的情况下以编译形式分发 Python 应用程序(尽管这不是一种代码“混淆”技术)。

关于python - 为什么旧的 .pyc 文件会破坏 Django?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12334869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com