【发布时间】:2013-12-12 22:15:00
【问题描述】:
我对 Django 和 Python 比较陌生,所以我想我在这里缺少一些基础知识。
我想在我的 Django 1.6 项目/应用程序中使用 django-editlive 和 dajaxice。
首先我安装了 dajaxice 并让它工作(尽管我遇到了类似的情况,如下所述......)。然后我从 github 克隆了 django-editlive,用sudo python setup.py install 将它安装在我的 OS X 10.9 上。我注意到在 shell 输出中放置了一个新的 django 鸡蛋:/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/。在我将 editlive 添加到我的 settings.py 后,我收到如下错误:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 443, in execute_from_command_line
utility.execute()
File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 382, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 252, in fetch_command
app_name = get_commands()[subcommand]
File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/core/management/__init__.py", line 101, in get_commands
apps = settings.INSTALLED_APPS
File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/utils/functional.py", line 184, in inner
self._setup()
File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/conf/__init__.py", line 42, in _setup
self._wrapped = Settings(settings_module)
File "/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/conf/__init__.py", line 135, in __init__
logging_config_func(self.LOGGING)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 803, in dictConfig
dictConfigClass(config).configure()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/config.py", line 568, in configure
'filter %r: %s' % (name, e))
ValueError: Unable to configure filter 'require_debug_true': Cannot resolve 'django.utils.log.RequireDebugTrue': No module named RequireDebugTrue
我认为这个错误是因为/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/ 的 egg 中的 global_settings.py 试图配置一个不再存在于 Django 1.6 中的过滤器。请记住,我的应用程序使用 Django 1.6 运行。
/Library/Python/2.7/site-packages/Django-1.4.5-py2.7.egg/django/conf/global_settings.py 包含:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
}
},
现在简单的解决方案当然是删除该过滤器,瞧。但是,如果有更微妙的不兼容呢?如何在我的 Django 1.6 项目中正确重用需要 Django>=1.3,<=1.4.5 的应用程序?我对 virtualenv 的拙见告诉我这不是解决方案,对吧?不应该 editlive 尝试使用 Django 1.6 并且可能会严重失败,但至少不要安装并尝试使用旧版本的 Django?如果 virtualenv 是解决方案,我的应用程序如何知道另一个应用程序应该在旧 Django 版本中运行?
【问题讨论】:
-
有什么理由不将自己的应用程序降级到 Django 1.4.5 吗?在我看来,这是最干净的解决方案
-
好主意!但是假设我想重用需要 Django 1.5.5 的第三个应用程序,我将如何解决这个问题?
-
您不能使用两个应用程序,其中一个需要 Django = 1.5.5。它们根本不兼容。
-
总的来说,我认为 Django 1.4(及其附属版本)是目前支持最完善的版本,目前几乎没有任何库不支持它(而且 1.5 支持正在不断传播)。即使在极少数情况下你确实找到了一些支持 ahem github)
-
是的。
"Use Django 1.4.x or fix the app myself"你说得比我好
标签: python django python-2.7 virtualenv