Python导入错误:来自.decoder导入JSONDecoder:语法无效

时间:2014-10-08 09:22:51

标签: python json python-2.6

我有一个python模块(getActiveLocation.py)。它基本上发出一个http POST调用,处理它的响应并返回它。

它使用了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对我来说不是一个直接的解决方案:(。

我使用了Portable json module in jython

中的评论中提到的simplejson

但是在这里,当我在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

2 个答案:

答案 0 :(得分:0)

可能你需要

from __future__ import absolute_import

使您的代码与Python 3.x样式导入兼容。 或者尝试删除“点”:from decoder import JSONDecoder。它应该在Python 2.6中工作。不确定Jython。

编辑:在评论中找到答案:Portable json module in jython

答案 1 :(得分:0)

从bash脚本运行python脚本时,我有相同的SyntaxError。解决方案是指定PYTHONPATH,例如PYTHONPATH = /usr/local/lib/python2.7。我还指定了在运行python脚本时使用的python,例如: / usr / local / bin / python my_python_script.py。