Создайте Python "JAR" эквивалент на Mac для запуска на Windows - PullRequest
0 голосов
/ 02 января 2019

Я новичок в Python.Если я хочу упаковать Java-программу, я мог бы использовать Maven для определения зависимостей и создать Jar-файл, включающий все библиотеки, необходимые для Mac, которые также можно запускать с помощью консоли windows cmd, и на этом компьютере с Windows устанавливается только java, т.е. java -myProgram.jar

Интересно, как я мог добиться того же с программой на Python, которая использовала некоторые сторонние библиотеки.Я искал некоторые варианты, такие как колеса, но все еще не понимал, какова их роль.Не могли бы вы дать мне больше советов по этому поводу?Я использую PyCharm в качестве IDE.Большое спасибо.

1 Ответ

0 голосов
/ 02 января 2019

Для ближайшего эквивалента .jar вам нужно приложение Python ZIP. Для этого потребуется только подходящая версия Python, установленная на компьютере пользователя. https://docs.python.org/3/library/zipapp.html#creating-standalone-applications-with-zipapp

По сути, вы можете использовать pip (менеджер пакетов Python), чтобы установить список зависимостей, которые вы перечисляете, в каталог, который вы заархивируете.

$ python -m pip install foopackage barpackage>=1.0 --target source
$ python -m zipapp source -m "source.foomodule:main" # use -c to compress

Где source - это имя вашего исходного каталога, содержащего вашу программу, а main - это имя вашей точки входа (в foomodule). Это создаст один файл .pyz, который является эквивалентом Python .jar.

Затем вы можете запустить его на компьютере с Windows с помощью

> py source.pyz

Где py - это либо ваша программа запуска Python, либо соответствующий исполняемый файл Python, который вы установили.

Если у вас есть requirements.txt, у вас могут быть зависимости от установки pip до его архивирования.

$ python -m pip install -r requirements.txt --target source

(Если вы этого не сделаете, вы можете попробовать сгенерировать один из вывода pip freeze, но это все , которое вы установили, что может быть слишком много.)


Конечно, все это предполагает, что ваши зависимости - чистый Python. Если у вас есть какой-то пакет с скомпилированным двоичным файлом для macOS, он не будет работать в Windows. Фактически, расширения C обычно не могут быть выполнены изнутри zip-архива, даже если вы компилируете их в Windows.

Если вам нужны такие бинарные файлы, я бы рекомендовал попробовать сторонний инструмент, такой как pex .

...