Есть много, много, много, много, много, много, много способов сделать это. Я расскажу о принципах каждого из них, и это вариант использования.
1. A python environment
Есть много способов сделать это. pipenv
, conda, requirments.txt
, et c et c.
С некоторыми из них вы можете указать python версии. Что касается других, просто укажите диапазон python версий, с которыми вы знаете, что он работает - например, если вы используете python 3.7, он вряд ли не будет поддерживать 3.6; есть только одно или два небольших изменения. 3.8 также должно работать.
Другой похожий метод - setup.py
. Они обычно используются для распространения библиотек - например, PyInstaller (другое решение, о котором я упомяну ниже), или numpy, или wx Python, или PyQt5 et c - для импорта / использования из командной строки. python руководство по упаковке весьма полезно, и есть множество учебных пособий. (google python setup.py tutorial
) Вы также можете указать требования в этих файлах.
2. Контейнер
Docker является большим. Если вы не слышали об этом, я буду удивлен. Краткий гугл резюме дает this , часть которого я процитирую:
Так почему все любят контейнеры и Docker? Джеймс Боттомли, бывший технический директор Parallels по виртуализации серверов и ведущий разработчик ядра Linux, объяснил, что гипервизоры виртуальных машин, такие как Hyper-V, KVM и Xen, основаны на эмуляции виртуального оборудования. условия системных требований. "
Контейнеры, однако, используют общие операционные системы. Это означает, что они намного более эффективны, чем гипервизоры в терминах системных ресурсов. Вместо виртуализации оборудования контейнеры располагаются поверх одного экземпляра Linux. Это означает, что вы можете «оставить после себя бесполезный 99,9% мусора ВМ, оставив вам небольшую аккуратную капсулу, содержащую ваше приложение»,
Это должно подвести итог для вас. (Обратите внимание, что вам не нужна указанная c ОС для контейнеров.)
3. Исполняемый файл
Существует 2 основных инструмента, которые делают это на момент написания. PyInstaller и cx_Freeze. Оба активно развиваются. Оба имеют открытый исходный код.
Вы берете свой сценарий, и инструмент компилирует его в байт-код, находит импорт, копирует его и создает переносную среду python, которая запускает ваш сценарий в целевой системе без конца пользователю нужно python.
Лично я предпочитаю PyInstaller - я один из разработчиков. PyInstaller предоставляет все свои функции через сценарий командной строки и поддерживает большинство библиотек, о которых вы только можете подумать, и расширяется, чтобы поддерживать больше. Для cx_Freeze требуется сценарий установки.
Оба инструмента поддерживают windows, Linux, macOS и другие. PyInstaller может создавать отдельные файлы exe или один пакет папок, тогда как cx_Freeze поддерживает только один пакет папок. PyInstaller 3.6 поддерживает python 2.7 и 3.5-3.7 - но 4.0 не будет поддерживать python 2. cx_Freeze прекратил поддержку python 2 со времени последнего основного выпуска (я думаю, что 6.0).
В любом случае, достаточно об инструментах; Вы можете посмотреть на них сами. (Подробнее см. https://pyinstaller.org и https://cx-freeze.readthedocs.io)
При использовании этого метода распространения вы обычно предоставляете исходный код в репозитории GitHub, пару exes (по одному для каждой платформы), готовые к загрузке, и инструкции по сборке кода в исполняемый файл.