У меня есть скрипт Python, который я хочу распространить в Windows, где у людей может не быть установлен Python. Поэтому я использую py2exe. Проблема заключается в сценарии, в котором я запускаю другие сценарии Python, используя подпроцесс, который требует интерпретатора Python в качестве программы для выполнения. Поскольку у меня не установлен интерпретатор python в Windows, могу ли я каким-либо образом игнорировать интерпретатор и обойти проблему? Можно ли как-нибудь вызвать интерпретатор Python, упакованный py2exe?
Используйте интерпретатор Python, упакованный с py2exe
Ответы (1)
Вероятно, это проще, чем вы думаете: вместо запуска подпроцессов используйте встроенную команду eval()
для выполнения сценариев.
[EDIT] Чтобы перенаправить stdio, замените sys.stdout/ sys.stderr с буферами или чем-то еще, что поддерживает "write()".
Для восстановления исходных значений модуль sys
предлагает __stdout__
и т. д.
[EDIT2] Я не пробовал это, но это может сработать: добавьте «python.exe» в набор файлов, которые создает py2exe.
Из основного кода скопируйте все файлы, созданные py2exe + python.exe во временный каталог. Затем добавьте все свои сценарии.
Теперь запустите новый интерпретатор Python с небольшим скриптом, который добавит временную папку и library.zip
в папку sys.path
.
Примечание. Python не нужно «устанавливать», как приложение Windows. На самом деле можно просто скопировать все файлы на новое место. Пока путь поиска правильный, это работает.
eval
ed. Вам нужно будет сообщить py2exe, чтобы он связал все дополнительные необходимые модули.
- person Craig McQueen; 12.07.2011