Импорт основного скрипта из скрипта-заглушки, вызывающего зависание - PullRequest
0 голосов
/ 19 октября 2011

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

.
import mainapp

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

1 Ответ

0 голосов
/ 20 октября 2011

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

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

Например, в

import one_module

while(true) :
    various_code()

def foo() :
    print "bar"

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

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

...