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