Импорт основного скрипта из сценария-заглушки, вызывающий замораживание

#python #py2app #gevent

#python #py2app #gevent

Вопрос:

Я создаю приложение для распространения с помощью py2app. Поскольку я не хочу, чтобы исходный код извлекался из файла .app, у меня есть файл-заглушка с именем run.py , который затем запускает код в mainapp.py:

 import mainapp
  

Запуск этого непосредственно в терминале (без участия py2app) приводит к зависанию в зависящей от gevent части кода. Результат тот же, когда он превращается в .app. Изменяет ли импорт вышеуказанным образом какую-либо среду интерпретатора? Кажется странным, что происходит просто замораживание, сообщений об ошибках нет (нет блока try / catch.)

Комментарии:

1. приведенное описание слишком ограничено, чтобы дать полезный ответ.

Ответ №1:

Когда вы импортируете модуль в Python, этот модуль выполняется. Убедитесь, что в mainapp нем нет «свободного кода», который может заморозить вашу виртуальную машину python (например, бесконечный цикл).

«Свободный код» — это набор инструкций, которые находятся вне определения функции или класса.

Например, в

 import one_module

while(true) :
    various_code()

def foo() :
    print "bar"
  

вторая строка — это свободный код.

Когда я пытаюсь импортировать этот скрипт while , выполняется инструкция, и python зависает.