Портировать мульти-версию Python-приложения на Windows

1

Я написал программу на Python 3, которая полагается на другую программу в Python 2.7 для некоторых основных задач. Он работает без сбоев на gnunux, поскольку в большинстве дистрибутивов уже установлено 2,7, я просто должен требовать Python 3, и все это хорошо.

Но теперь я хочу перенести пакет в Windows, и я не знаю, как это сделать. У меня есть следующие проблемы

У меня есть исходный код для всего, что я использую, и все находится под лицензиями libre, поэтому у меня нет проблем с компиляцией PE или переносом 2.7 скриптов в 3, но это будет утомительная работа. Единственное решение, которое я нашел до сих пор, - это переносить все на Python 3. Можете ли вы подумать о другом?

Теги:

2 ответа

1
Лучший ответ
  • Недавняя Python Launcher для Windows (см. Также PEP 397) может использоваться для имитации поведения shebang/version. Однако, если вы хотите это сделать, разные версии python должны быть установлены в системе, конечно (и запускающая программа также зарегистрирована как приложение по умолчанию для файлов.py)
  • Инструменты, такие как PyInstaller и py2exe, могут связывать динамически импортированные модули, но не открывать их самостоятельно: вы должны будете указать их самостоятельно. Я думаю, что ваша проблема с этими инструментами будет заключаться в том, что они не делают приложения с разными версиями Python одновременно.

Поэтому, я думаю, вам осталось либо потребовать установки python 2.7 и python 3 в целевой системе, либо сделать отдельный exe для ваших сценариев 2.7 и 3, а также изменить вызовы подпроцесса, чтобы называть их. (вы можете связать установки python с вашим собственным, а не с использованием стандартных общесистемных установок python, но вам все равно придется менять вызовы подпроцесса вместо того, чтобы полагаться на приложение Windows по умолчанию для расширений файлов)

1

Как насчет использования PyInstaller? Никогда не использовал его сам, но:

PyInstaller - это программа, которая преобразует (пакеты) программы Python в автономные исполняемые файлы под Windows, Linux и Mac OS X.

http://www.pyinstaller.org/

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

  • 0
    Извините, я забыл упомянуть, что использую динамический импорт. PyInstaller, похоже, не справиться с этим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню