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