Вопрос

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

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

Как я могу сделать классы из jython jar " смотрите " модули Python есть в наличии?

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top