Модули 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?


person Geo    schedule 22.01.2009    source источник


Ответы (4)


Вы встраиваете 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.

person Blauohr    schedule 27.01.2009

Согласно 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.

person Community    schedule 22.01.2009
comment
Вы можете использовать чистые модули Python из jython. Вы не можете использовать модули, реализованные на C. re и HTMLParser поставляются с jython. - person Igal Serban; 23.01.2009
comment
Ах, тогда моя ошибка. Оставляем этот ответ для справки. - person Michael Myers; 23.01.2009
comment
@Michael, вы должны отредактировать свое последнее предложение, это вводит в заблуждение. - person smci; 02.02.2012
comment
@smci Исправлено вводящее в заблуждение предложение. - person Anshuman Bhaduri; 14.03.2012

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

person Igal Serban    schedule 22.01.2009

Здесь вы можете найти решение Импорт модулей Python в jython

Загрузите ez_setup.py отсюда http://peak.telecommunity.com/dist/ez_setup.py

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

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

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

person Aminah Nuraini    schedule 26.11.2015