Использование Python из Java [дубликат]

Мое предложение

int age = (int) ((DateTime.Now - bday).TotalDays/365.242199);

, Которое, кажется, имеет год, изменяясь в правильную дату. (Я определяю протестированный до возраста 107)

58
задан Community 23 May 2017 в 11:54
поделиться

7 ответов

Я знаю о проекте Jython, но похоже, что это способ использовать Java и ее библиотеки изнутри Python, а не наоборот раунд - я ошибаюсь насчет этого?

Да, вы ошибаетесь. Вы можете вызвать интерпретатор командной строки для запуска кода Python с помощью Jyton или использовать код Python из Java . Раньше также существовал компилятор Python-to-Java, но он был прекращен с Jython 2.2

35
ответ дан 24 November 2019 в 19:09
поделиться

Я не думаю, что вы могли бы использовать NLTK из Jython, поскольку он зависит от Numpy, который не переносится на JVM. Если вам нужен NLTK или любое другое собственное расширение CPython, вы можете рассмотреть возможность использования какого-либо механизма IPC для связи между CPython и JVM. При этом существует проект Jepp, позволяющий вызывать CPython из Java:

http://jepp.sourceforge.net/

Обратное (вызов кода Java из CPython) является целью JPype и javaclass. :

sourceforge.net/projects/jpype/

pypi.python.org/pypi/javaclass/0.1

Я никогда не использовал ни один из этих проектов, поэтому не могу похвастаться их качеством.

4
ответ дан 24 November 2019 в 19:09
поделиться

Я бы написал модуль Python для обработки текста и языка, а затем построил бы небольшой мост на jython, с которым ваша java-программа может взаимодействовать. Мост jython будет очень простым, он на самом деле отвечает только за переадресацию вызовов в модуль python и возвращает ответ от модуля python модулю java. Jython действительно прост в использовании, и установка не займет у вас более 15 минут.

Удачи!

6
ответ дан 24 November 2019 в 19:09
поделиться

На мой взгляд, Jython - это именно то, на что вы смотрите.
Это реализация Python в JVM; Таким образом, вы можете свободно обмениваться объектами и, например, наследовать от класса Java (с некоторыми ограничениями).

Обратите внимание, что его основная сильная сторона (нахождение поверх JVM) также является его основным недостатком, потому что он не может использовать все (C) расширения Python, написанные на C (или на любом другом скомпилированном языке); это может повлиять на то, что вы собираетесь делать с обработкой текста.

Для получения дополнительной информации о Jython, его возможностях и ограничениях, я предлагаю вам прочитать FAQ Jython .

]
2
ответ дан 24 November 2019 в 19:09
поделиться

Jython - это реализация Python, работающая на JVM. Информацию о встраивании Python в существующее приложение Java можно найти в руководстве пользователя .

Я не знаю, в какой среде вы работаете, но имейте в виду, что смешивание языков в одном приложении может быстро привести к беспорядку. Я рекомендую создавать интерфейсы Java для представления операций, которые вы планируете использовать, вместе с отдельно упакованными классами реализации, которые обертывают код Python.

2
ответ дан 24 November 2019 в 19:09
поделиться

Просто запустите интерпретатор Python как подпроцесс изнутри Java.

Напишите свои функции Python как правильный сценарий, который читает из стандартного ввода и записывает в стандартный вывод.

Используйте Java Класс среды выполнения для создания подпроцесса, запускающего ваш скрипт Python. Это очень просто сделать и обеспечивает очень чистый интерфейс.


Править

import simplejson
import sys
for request in sys.stdin.readlines():
    args = simplejson.loads( request )
    result = myFunction( args['this'], args['that'] )
    sys.stdout.writeline( simplejson.dumps( result ) + "\n" )

Интерфейс простой, структурированный и имеет очень низкие накладные расходы.

0
ответ дан 24 November 2019 в 19:09
поделиться

Не забудьте сначала проверить у тех, кто платит за разработку, что они в порядке с кодовой базе требуется разработчик, который с этого момента знает как Python, так и Java, а также другие эффекты стоимости и удобства обслуживания, которые вы, несомненно, уже учли.

См .: http://www.acm.org/about/se- код 1.06, 2.03, 2.09, 4.03, 4.05, 6.07

0
ответ дан 24 November 2019 в 19:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: