2014-10-08 208 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。

相關問題