Подтвердить что ты не робот

Модули Jython и python

Я только начал использовать PythonInterpreter из моих классов Java, и он отлично работает! Однако, если я пытаюсь включить модули python (re, HTMLParser и т.д.), Я получаю следующее исключение (для re):

Exception in thread "main" Traceback (innermost last):
  File "", line 1, in ?
ImportError: no module named re

Как я могу сделать классы из jython jar "см." модули python доступны?

4b9b3361

Ответ 1

Вы внедряете jython, и вы будете использовать некоторые Python-модули:

если вы хотите установить путь (sys.path) в Java-коде:

public void init() {
        interp = new PythonInterpreter(null, new PySystemState());

        PySystemState sys = Py.getSystemState();
        sys.path.append(new PyString(rootPath));
        sys.path.append(new PyString(modulesDir));
    }

Py находится в org.python.core.

rootPath и modulesDir - это то, что вы хотите!

пусть точка rootPath, где вы находите стандартную jython-lib

Посмотрите на src/org/python/util/PyServlet.java в Jython-Source-Code, например

Ответ 2

В соответствии с FAQ:

4.1 Какие части библиотеки Python поддерживаются?

Хорошей новостью является то, что Jython теперь поддерживает большую часть стандартной библиотеки Python. Плохая новость заключается в том, что это произошло так быстро, что трудно обновить документацию.

Встроенные модули (например, те, что написаны на C для CPython) - это другая история. Они должны быть перенесены на Java или реализованы с помощью моста JNI для использования Jython. Некоторые встроенные модули были перенесены на JPython, в первую очередь cStringIO, cPickle, struct и binascii. Вряд ли модули JNI будут включены в Jython, хотя.

Если вы хотите использовать стандартный модуль Python, попробуйте импортировать его. Если это сработает, вы, вероятно, все настроены. Вы также можете сделать dir() на модулях, чтобы проверить список функций, которые он реализует.

Если есть какой-то стандартный модуль Python, в котором у вас есть настоящая необходимость, это еще не работает с Jython, отправьте нам письмо.

Другими словами, вы можете напрямую использовать модули Python из Jython, если вы не пытаетесь использовать встроенные модули, и в этом случае вы застряли в том, что было перенесено на Jython.

Ответ 3

Проверьте свой sys.path jython. Убедитесь, что библиотека, которую вы хотите загрузить, находится на этом пути. Подробнее см. jython faq.

Ответ 4

Здесь вы можете обратиться к решению Импорт модулей python в jython

Скачайте ez_setup.py здесь http://peak.telecommunity.com/dist/ez_setup.py

Затем запустите jython ez_setup.py <any module name>.

Запуск его на любом пути папки не имеет значения.

Я мог бы установить pymysql с ним, без проблем.