2014-10-08 207 views
0

我有一个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

+0

您使用的是什么版本的jython? – Yoel 2014-10-08 09:35:43

+0

Yoel, 我不太清楚如何检查jython版本。我拥有的JRE版本是1.6.0_24。所以我想即使jython版本也是一样的。 – Joseph 2014-10-08 09:45:38

+0

'jython --version'的输出是什么?另外,'import sys的输出是什么; sys.version'在'jython'脚本中执行时? – Yoel 2014-10-08 09:50:14

回答

0

也许你需要

from __future__ import absolute_import 

使你的代码与Python 3.x的风格兼容的进口。 或尝试删除“点”:from decoder import JSONDecoder。它应该在Python 2.6中工作。不确定关于Jython。

编辑:在这里找到的评论答案:Portable json module in jython

+0

感谢瓦西里的回应。未定义 从__init__.py中删除“点”是一个好主意,它是JSON模块中标准python文件的一部分? – Joseph 2014-10-08 10:25:35

+0

使用其他解释器的标准模块也不是一个好主意。使用带有自己的json模块的Jython更好。我检查了最新的稳定Jython 2.5.3,它不包含json模块。但最新的Jython 2.7 beta3呢!看看这里:http://search.maven.org/remotecontent?filepath=org/python/jython-installer/2.7-b3/jython-installer-2.7-b3.jar – 2014-10-08 12:29:48

0

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

相关问题