Микшер Pygame в подпроцессе не работает

ОС Debian. Я называю подпроцесс

subprocess.Popen([sys.executable, "/home/pi/play_sound.py"])

А в play_sound.py я проигрываю звук с помощью:

def load_sound(url):
    class NoneSound:
        def play(self): pass
    if not pygame.mixer or not pygame.mixer.get_init():
        return NoneSound()
    fullname = url
    try:
        sound = pygame.mixer.Sound(fullname)
    except pygame.error, message:
        print 'Cannot load sound:', fullname
        raise SystemExit, message
    return sound

Проблема в том, что когда я запускаю play_sound.py отдельно, он работает нормально. Но когда я называю это подпроцессом другого файла py, он не воспроизводит звук.


person Hoang-Long Cao    schedule 10.04.2013    source источник
comment
какие-нибудь сообщения об ошибках? файл может не отображаться при запуске из другого процесса   -  person Bartlomiej Lewandowski    schedule 10.04.2013
comment
почему бы не import play_sound, а затем просто позвонить load_sound, когда вам нужно?   -  person mgilson    schedule 10.04.2013
comment
Может быть, родительский процесс также инициализирует микшер, и у вас не может быть сразу два процесса с микшером?   -  person Armin Rigo    schedule 10.04.2013
comment
Никакой ошибки. play_sound - это графический интерфейс, который воспроизводит множество звуков в зависимости от ввода с клавиатуры. Поэтому я не могу просто импортировать его в файл main.py.   -  person Hoang-Long Cao    schedule 10.04.2013
comment
from pygame.locals import * также импортирует микшер? Как его экспортировать из программы?   -  person Hoang-Long Cao    schedule 10.04.2013
comment
Все работает в Windows, но не в Debian :(   -  person Hoang-Long Cao    schedule 10.04.2013
comment
Я решил это. Нам нужно инициализировать pygame.mixer.init(), а затем выйти из него перед вызовом подпроцесса pygame.mixer.quit().   -  person Hoang-Long Cao    schedule 11.04.2013
comment
Отвечая на побочный вопрос: from pygame.locals import * не импортирует микшер. from pygame import * делает, но не запускает pygame.mixer.   -  person ndvo    schedule 13.07.2013