Является ли Jython 2.5.1 несовместимым с Python 2.7? - PullRequest
3 голосов
/ 16 января 2012

Я пытаюсь сделать довольно простые вещи в Jython в Java.Мой путь к Python, и, соответственно, мой путь к Jython, установлен следующим образом:

$ python -c "import sys ; ':'.join(sys.path)"
:/usr/lib/python2.7:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages/PIL:/usr/lib/python2.7/dist-packages/gst-0.10:/usr/lib/python2.7/dist-packages/gtk-2.0:/usr/lib/pymodules/python2.7:/usr/lib/python2.7/dist-packages/ubuntu-sso-client:/usr/lib/python2.7/dist-packages/ubuntuone-client:/usr/lib/python2.7/dist-packages/ubuntuone-control-panel:/usr/lib/python2.7/dist-packages/ubuntuone-couch:/usr/lib/python2.7/dist-packages/ubuntuone-installer:/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol:/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode

(более легкий для чтения список можно найти здесь .)

Я установил свой путь Jython, определив -Dpython.path=":/usr/lib/python2.7:...", и он работает довольно хорошо.

Однако у меня возникают проблемы, когда я пытаюсь сделать что-то значительное, например, импортировать модуль os:

>>> import os
Exception in thread "main" Traceback (most recent call last):
    File "<iostream>", line 2, in <module>
SyntaxError: ('no viable alternative at input \'""\'', ('/usr/lib/python2.7/os.py', 754, 18, '            bs = b""\n'))

Что здесь не так?Является ли Jython несовместимым с Python 2.7?Что я могу сделать, чтобы все заработало?

1 Ответ

5 голосов
/ 16 января 2012

Вы не можете смешивать версии и реализации Python.Используемый вами Cpython - 2.7, а Jython - 2.5, поэтому они не могут иметь одинаковый путь, даже если вы сделали это для Cpython 2.5 и 2.7

. Фактическая ошибка, которую вы видите, заключается в том, что jython загружает библиотеки Python C иполучает код, который вызывает код на C, которого нет в jython.

Вы можете поделиться чистым кодом на python для той же версии, например, python 2.5 и jython 2.5, но вряд ли сможете управлять каким-либо другим миксом.

...