我有一个python模块(getActiveLocation.py)。它基本上做了一个http POST调用,处理它的响应并返回它。Python导入错误:从.decoder导入JSONDecoder:无效语法
它利用了json模块。我在RedHat Linux上运行python 2.6。该模块独立运行时可以正常工作。 当模块getActiveLocation.py是独立运行,sys.path中是
['/current_directory/','/usr/lib64/python26.zip','/usr/lib64/python2.6','/usr/lib64/python2.6/lib-tk','/usr/lib64/python2.6/site-packages','/usr/lib/python2.6/site-packages']
JSON模块/usr/lib64/python2.6/目录内的现有。
这个python模块(getActiveLocation.py)被导入到一个jython脚本(schedule_location.py)中,当jython脚本运行时,它给了json模块一个导入错误。
ImportError: no module named json
它看起来像一个sys.path问题。
我手动尝试添加/usr/lib64/python2.6通过内部schedule_location.py到sys.path中:
sys.path.append('/usr/lib64/python2.6')
然后改变了错误:
File "/usr/lib64/python2.6/json/__init__.py", line 108
from .decoder import JSONDecoder
^
SyntaxError: invalid syntax
知道为什么这错误正在发生?感谢您的帮助。
瓦西里,
我在生产系统上,我没有任何控制!所以升级Jython是不适合我:(立即解决。
我使用simplejson在Portable json module in jython
在评论中提及但在这里,当我在python运行它,它正在发挥作用。但是,从Jython的运行时,它提供了:
File "schedule_location.py", line 21, in ?
File "getActiveLocation.py", line 4, in ?
File "simplejson/__init__.py", line 113, in ?
File "simplejson/decoder.py", line 7
from .compat import fromhex, b, u, text_type, binary_type, PY3, unichr
^
SyntaxError: invalid syntax
为了克服这个问题,我用:
from __future__ import absolute_import
但是却给了:
File "schedule_location.py", line 21, in ?
File "getActiveLocation.py", line 1
SyntaxError: future feature absolute_import is not defined
我明白,这需要Python 2.5以上。但我对Python的2.6
您使用的是什么版本的jython? – Yoel 2014-10-08 09:35:43
Yoel, 我不太清楚如何检查jython版本。我拥有的JRE版本是1.6.0_24。所以我想即使jython版本也是一样的。 – Joseph 2014-10-08 09:45:38
'jython --version'的输出是什么?另外,'import sys的输出是什么; sys.version'在'jython'脚本中执行时? – Yoel 2014-10-08 09:50:14