运行GitHub中django-geoext示例时遇ImportError:无法导入execute_manager求解决
解决Django中ImportError: cannot import name execute_manager的问题
这个问题很常见——你用的Django版本太新了,而django-geoext示例的manage.py还是沿用了旧版Django的写法。execute_manager这个方法在Django 1.7及以后的版本里已经被移除,官方换成了execute_from_command_line来替代它。
直接修改你的manage.py就能解决,具体步骤如下:
- 替换导入语句
把原来的:
from django.core.management import execute_manager
改成:
from django.core.management import execute_from_command_line
- 修改执行逻辑
找到原来调用execute_manager(settings)的地方(通常是文件最后一行的if __name__ == "__main__":块里),替换成:
execute_from_command_line(sys.argv)
结合你提供的代码片段,修改后的完整manage.py应该是这样的:
#!/usr/bin/env python import sys from django.core.management import execute_from_command_line try: import settings # Assumed to be in the same directory. except ImportError: sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\n" % __file__) sys.stderr.write("You'll have to run django-admin.py, passing it your settings module.\n") sys.stderr.write("(If the file settings.py does exist, it's causing an ImportError somehow.)\n") sys.exit(1) if __name__ == "__main__": execute_from_command_line(sys.argv)
额外注意事项
- 如果修改后还是出现其他兼容性错误,那大概率是
django-geoext这个项目比较老旧,只支持Django 1.6及以下版本。这种情况下你可以降级Django到对应版本,比如执行:pip install django==1.6.11 - 确保
settings.py确实和manage.py在同一目录下,如果不在,你可以通过设置环境变量DJANGO_SETTINGS_MODULE来指定配置文件路径。
内容的提问来源于stack exchange,提问作者Mar
相关产品推荐
相关产品推荐

