Запустите скрипт Python с помощью Popen с помощью PyInstaller. - PullRequest
0 голосов
/ 31 августа 2018

Мне нужно запустить скрипт внутри Popen внутри упакованного проекта (с pyinstaller). Команде НЕОБХОДИМО, чтобы она выполнялась в python3, и мне (очевидно) она должна быть переносимой, что означает, что я не могу полагаться на конфигурацию (нотацию python / python3), используемую на машине, которую я использовал для генерации пакета, ни где я его использую (я также не могу гарантировать, что в машине развертывания будет какой-либо питон ...).

У меня есть компьютеры, на которых Python уже является верной версией, и другие, где верной версией является python3. Я попытался вставить #! / Usr / bin python3 в начало файла, а затем запустить как python, но это не сработало.

subprocess.Popen(['python', 'internal.py', arg1, arg2], universal_newlines=True)

В незамерзающей среде я могу использовать sys.executable вместо python. Я попытался «pyinstall» для internal.py, затем «pyinstall» для остальных, скопировав внутреннюю папку в новую папку и затем вызвав:

subprocess.Popen(['./internal/internal', arg1, arg2], universal_newlines=True)

Но это не работает ... В консоли (перемещение в большую папку проекта) это работает, но при запуске пакета это не ...

Есть идеи?

Ps. Я не могу просто импортировать скрипт как класс или что-то еще. Я не могу изменить переменные системного окружения (кроме тех, которые находятся внутри штуки pyinstaller ...)

Я видел кое-что о PyInstaller.compat, который имеет exec_python и __wrap_python, но я не смог его использовать. Я получаю ошибки при попытке запустить пакет из-за pkg_resources.DistributionNotFound: The 'PyInstaller' distribution was not found and is required by the application, я пытался создать ловушку, чтобы добавить как скрытый импорт ... Ничего не сработало (но часть крючка, может быть, я ошибся ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...