Открытие PyGTK Python Module Ошибка в py2exe - PullRequest
1 голос
/ 13 августа 2011

У меня есть проект, написанный на Python 2.7 и PyGTK, с py2exe для компиляции. У меня есть два модуля, «Launchpad.py» и «RegistrationScreen.py». Мне нужно открыть RegistrationScreen.py с Launchpad.py.

В настоящее время я использую следующий код:

def open_registration(event, data=None):
    subprocess.Popen(["python", "RegistrationScreen.py"])

Это нормально работает при тестировании - окно открывается без открытия окна оболочки.

Однако, когда я компилирую с использованием py2exe, я получаю следующую ошибку журнала при выполнении созданного приложения.

Traceback (последний вызов был последним): файл "Launchpad.py", строка 26, в файл open_registration "subprocess.pyc", строка 672, в init
Файл "subprocess.pyc", строка 882, в _execute_child WindowsError: [Ошибка 2] Система не может найти указанный файл

Как мне исправить мой код, чтобы py2exe правильно его компилировал? Есть ли другой способ открыть окно модуля RegistrationScreen.py из файла Launchpad.py, который не будет выдавать ошибки в конечном файле .exe?

1 Ответ

1 голос
/ 14 августа 2011

Проблема в пути. RegistrationScreen.py (вероятно) сжимается внутри dist / library.zip, но ваш вызывающий код ищет его в dist / RegestrationScreen.py.

Я не знаю, какое лучшее решение для этого ... py2exe - своего рода боль для доступа к файлам.

Кроме того, вы, вероятно, не хотите делать subprocess.Popen(["python", "RegistrationScreen.py"]), потому что вы не можете гарантировать, что у ваших пользователей будет установлен python и он доступен для всей системы. Если вам действительно нужен отдельный процесс, то, возможно, вам следует запустить py2exe на RegistrationScreen.py индивидуально, чтобы создать отдельный .exe, а затем включить его в папку dist вашего основного .exe?

Я знаю, что это несколько запутанно, но, вероятно, это сработает. И, как я уже сказал, может быть, есть лучший способ.

...