У меня есть проект Java, который я хочу экспортировать как банку.Проблема в том, что я вызываю несколько скриптов Python внутри программы, и для этих скриптов требуется установить несколько пакетов Python.Мой вызов скрипта python выглядит следующим образом:
root = Paths.get(".").toAbsolutePath().normalize().toString();
cmd = "python " + root + "/my_script.py"
Runtime.getRuntime().exec(cmd)
И когда я запускаю jar, это работает нормально, если у меня есть скрипты Python на месте и все пакеты Python (плюс сам Python) установлены намой компьютер (глобально).
Что я хотел бы сделать, так это собрать все эти элементы Python в мою флягу, чтобы я мог запустить приложение на любой машине (единственное требование - Java 8 - нетPython или любой из его пакетов).Я обнаружил, что virtualenv - это именно то, что будет делать эту работу здесь.
Поскольку я работаю в IDEA, я решил настроить virtualenv для SDK и поэтому создал среду Virtualenv следующим образом. этот урок .Добавил нужные мне пакеты в настройки среды, поместил my_script.py в директорию scripts.В итоге получилась такая структура:
/
├── src
│ └── main.java
│ └── sample.fxml
└── venv
├── include
│
├── scripts [a bunch of default scripts here + my_script.py]
└── lib
└── site-packages [a bunch of libraries here including the ones I require]
└── tcl8.6
Я должен сказать, что учебник Jetbrain действительно нуждается в продолжении, так как я абсолютно потерян.Я просто не знаю, как ссылаться на my_script.py, чтобы он использовал пакеты из venv, а не глобальные.
Буду очень признателен за вашу помощь или подсказки!