Упаковка Jython с модулями для легкой установки - PullRequest
1 голос
/ 26 марта 2012

Я только что построил проект Jython, который использует как импорт некоторых модулей Python, так и некоторые jar-файлы Java.На моем собственном компьютере, поскольку я просто хотел, чтобы все было сделано, я заставил вещи работать очень хакерским способом, жестко запрограммировав sys.path и установив каждый модуль и jar, которые я хотел отдельно.Это определенно не то, что я хочу сохранить для релизной версии.Я читал о том, как можно упаковать все в одну автономную банку Jython, и это звучит довольно хорошо для меня.Есть ли причина, по которой я не должен этого делать?Если нет, то есть ли руководство о том, как сделать это лучше, если кто-то мне скажет?Я запускаю все это через PIG, поэтому было бы идеально иметь вызываемый Jython jar.

Я знаю, что некоторые подобные вопросы уже существуют в SO, но ответы на них кажутся довольно старыми, и документацияданный (для MavenJython, например) довольно беден.Я уже посмотрел на MavenJython и Jip , но я не могу определиться с выбором между ними, и я не могу найти достаточно информации ни для одного из них.Идеальный ответ на этот вопрос: что я должен использовать, почему я должен его использовать, и кратко продемонстрируйте, как его использовать.Ссылка на любой из них также будет потрясающей.

Спасибо!

1 Ответ

0 голосов
/ 26 февраля 2013

Пожалуйста, опишите, как можно улучшить документацию MavenJython. С 2011 года ситуация не изменилась (вы, вероятно, видели этот ответ ), что не так давно. Сайт есть, но, как программист, вы, вероятно, просто хотите прочитать исходный код проекта jython-compile-maven-plugin-test , который содержит всего 200 строк кода. Рекомендуется использовать этот пакет в качестве отправной точки для собственного проекта.

Философия распределения

Способ распространения программного обеспечения Java (и распространения программного обеспечения Windows) обычно заключается в том, что вы упаковываете все, что вам нужно. Так что да, автономная банка Jython будет уместна. Недостатком является то, что каждое программное обеспечение может использовать свою версию Jython, преимущество в том, что это может быть то, что вы хотите (обновления могут сломать вещи). Это также подход MavenJython, упаковывающий все в правильные версии.

Дистрибутив программного обеспечения Python и Linux просто устанавливает пакеты, проверяя совместимость во время установки. Это подход jip, предполагающий, что у вас уже есть Jython, и тот, кто устанавливает программное обеспечение, решает проблемы совместимости, устанавливая правильные версии.

Различия

Я не могу сказать много о джипе, хотя я не использовал его. Из того, что я вижу в демонстрациях, jip предназначен для обеспечения доступа пакетов Python к библиотекам Java Maven. Похоже, что он также способен создавать пакеты maven из кода Jython. Таким образом, вы можете достичь своей цели, используя MavenJython или jip. Просто попробуйте.

Результаты, созданные с использованием MavenJython, распространяют Jython, а jip - нет.

  • Если вы хотите проинструктировать программистов, которые уже используют jython и не знакомы с Maven, которые хотят использовать вашу библиотеку для получения вашего пакета библиотеки jython, возможно, вам подойдет jip.
  • Если вы хотите писать библиотеки Jython для программистов и распространять их, вы можете использовать либо MavenJython, либо jip.
  • Если у вас есть программный пакет, который в конечном итоге будет поставляться заказчикам, который также использует код Jython и пакеты Jython, возможно, также предоставляя пользователю внутрипрограммные сценарии, используйте MavenJython. Позволяет создать автономный исполняемый файл.

Вариант использования свиньи

Для запуска jython через pig достаточно установить jython и поместить исходные коды jython в ваш путь - см. Раздел embed python в руководстве по pig . jip может подойти для локальной установки пакетов jython, но не обязателен, если вы только хотите запустить свой код. Однако если вы хотите распространять программное обеспечение, использующее pig, и устанавливать pig, jython и ваш код на клиентский компьютер, MavenJython может сделать это за вас.

...