python – 为什么一个旧的.pyc文件破解Django?

前端之家收集整理的这篇文章主要介绍了python – 为什么一个旧的.pyc文件破解Django?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我今天使用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中的任何编译代码

解决方法

不,事实上,Python最好使用.pyc文件,只有访问.py文件,如果它存在,b)比.pyc文件更新.

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

猜你在找的Python相关文章