【发布时间】:2014-12-02 21:46:08
【问题描述】:
我有一个 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
【问题讨论】:
-
你使用的是什么版本的
jython? -
Yoel,我不太清楚如何检查 jython 版本。我拥有的 JRE 是 1.6.0_24 版。所以我想即使是 jython 版本也是一样的。
-
jython --version的输出是什么?另外,在jython脚本中执行时import sys; sys.version的输出是什么? -
Yoel,我不直接执行 jython。我的路径中没有它。所以无法获得 jython --version。我从一个 shell 脚本中调用它,如下所示: out=
java -cp "$SYS_PATH" -Dpython.path=${SCRIPT_PATH} weblogic.WLST -skipWLSModuleScanning -i ${SCRIPT_PATH}/schedule_location.py和一个 import sys; print sys.version 给我:2.6.6 (r266:84292, Feb 22 2013, 00:00:18) [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] -
您能否将您的
jython版本升级到具有内置json模块的版本?我认为这比强迫它与cpython的json模块一起工作要简单得多。
标签: python json python-2.6