manage.py和simplejson調用報錯解決

1. 調用manage.py報錯python

在安裝Mathematica的開源替代版Mathics後初始化時,調用manage.py報錯:shell

Traceback (most recent call last):
  File "mathics/manage.py", line 3, in <module>
    from django.core.management import execute_manager
ImportError: cannot import name execute_manager

經搜索後找到解決方法(產生這一錯誤的緣由參見https://docs.djangoproject.com/en/1.4/releases/1.4/#updated-default-project-layout-and-manage-py),須要修改所調用的manage.py。django

對Mathics所用的manage.py,修改前的manage.py:json

#!/usr/bin/env python

from django.core.management import execute_manager
try:
    import settings  # Assumed to be in the same directory.
except ImportError:
    import sys
    sys.stderr.write(
        """Error: Can't find the file 'settings.py' in the directory containing
%r. It appears you've customized things.\n
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError.)\n"""
        % __file__)
    sys.exit(1)

if __name__ == "__main__":
    execute_manager(settings)

    # fix known PyPy bug (see https://bugs.pypy.org/issue1116)
    import gc
    gc.collect()
    gc.collect()

修改後的manage.py:app

#!/usr/bin/env python

import os, sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

    # fix known PyPy bug (see https://bugs.pypy.org/issue1116)
    import gc
    gc.collect()
    gc.collect()

主要改動是將import execute_manager 修改成 import execute_from_command_line。更詳細的修改說明參見上文連接。python2.7


2. 使用django.utils.simplejson報錯ui

上述初始化成功後,Mathics仍沒法正常啓動,報錯以下:spa

Traceback (most recent call last):
  File "/usr/local/bin/mathics", line 9, in <module>
    load_entry_point('Mathics==0.6.0rc1', 'console_scripts', 'mathics')()
  File "/usr/local/lib/python2.7/dist-packages/Mathics-0.6.0rc1-py2.7.egg/mathics/main.py", line 214, in main
    definitions = Definitions(add_builtin=True)
  File "/usr/local/lib/python2.7/dist-packages/Mathics-0.6.0rc1-py2.7.egg/mathics/core/definitions.py", line 49, in __init__
    from mathics.builtin import modules, contribute
  File "/usr/local/lib/python2.7/dist-packages/Mathics-0.6.0rc1-py2.7.egg/mathics/builtin/__init__.py", line 21, in <module>
    from mathics.builtin import (
  File "/usr/local/lib/python2.7/dist-packages/Mathics-0.6.0rc1-py2.7.egg/mathics/builtin/graphics.py", line 9, in <module>
    from django.utils import simplejson
ImportError: cannot import name simplejson

報錯信息看下來是在「django.utils」中沒有simplejson這一模塊所致,經搜索後得知simpljson已在最新版的django中移除了(參見https://docs.djangoproject.com/en/dev/releases/1.7/#features-removed-in-1-7),而這一模塊可用標準庫中的json代替。解決方法爲將py腳本中全部使用simplejson的地方改成json。如將報錯信息中提到的graphics.py裏的code

from django.utils import simplejson

改成:ip

import json as simplejson
相關文章
相關標籤/搜索