Файл wav не воспроизводится после использования pyinstaller --onefile. Я просто слышу звуковой сигнал windows - PullRequest
0 голосов
/ 12 июля 2020

Эта программа отображает домашнюю панель автоматического выключателя. пользователь может просмотреть, что находится на каждом выключателе на панели (данные взяты из импортированного словаря введенной информации панели выключателя), или пользователь может проверить, какие выключатели контролируют любую зону списка (подвал кухни и т. д. c). Программа breakerville закрывается, когда пользователь решает и должен проиграть волновой файл в конце. Он не воспроизводится после преобразования программы в exe с помощью pyinstaller, только звуковой сигнал windows. Я подозреваю, что мне может потребоваться отредактировать файл spe c, чтобы заставить волновой файл работать после компиляции. Это правильно, и если да, то как? Нужно ли мне изменять файл spe c?

        from playsound import playsound  # CURRENTLY USING
        from chart import chart
        from BreakerZones import BreakerZones
        import time
        import sys
        import colorama
        import yaml  # to print the nested_lookup results(n) on separate lines
        from nested_lookup import nested_lookup, get_all_keys # importing 2 items from nested_lookup
        from colorama import Fore, Back, Style
    
    
    colorama.init(autoreset=True)  # If you don't want to print Style.RESET_ALL all the time,
                                   # reset automatically after each print statement with True
    print(colorama.ansi.clear_screen())
    
    print('\n'*4)  # prints a newline 4 times
    
    
    print(Fore.MAGENTA + '                             Arriving-' + Fore.GREEN + '    *** BREAKERVILLE USA ***')
    
    def main():
    
    
    print('\n' * 2)
    print(Fore.BLUE + '   Breaker Numbers and Zones')

    k = get_all_keys(BreakerZones)
    # raw amount of keys even repeats , has quotes

    new_l = []                                         # eliminate extra repeating nested keys
    for e in k:                                        # has quotes
        if e not in new_l and sorted(e) not in new_l:  #
            new_l.append(e)                            #
    print()

    new_l.sort()  # make alphabetical
    newer_l = ('%s' % ', '.join(map(str, new_l)).strip("' ,"))  # remove ['%s'] brackets so they don't show up when run
    print(' ', yaml.dump(newer_l, default_flow_style=False))    #  strip("' ,")  or will see leading "' ," in output

    print(Fore.BLUE + '   ENTER A BREAKER # OR ZONE', Fore.GREEN + ': ', end='')
    i = input().strip().lower()  # these lines is workaround for the colorama
    print()              # user input() issue of 'code' appearing in screen output

    if i in k:
        n = (nested_lookup(i, BreakerZones, wild=False, with_keys=False))   # wild=True means key not case sensitive,
        print(yaml.dump(n, default_flow_style=False))                       # 'with_keys' returns values + keys also
        # for key, value in n.items():     eliminated by using yaml
        #    print(key, '--', value)       eliminated by using yaml
    else:
        print(Fore.YELLOW + ' Typo,' + Fore.GREEN + ' try again')
        main()

    print()

    print(Fore.GREEN + '           Continue? Y or N: C for breaker chart : ', end='')  # see comments ENTER A BREAKER
    ans = input().strip().lower()      # strip() removes any spaces before or after user input

    if ans == 'c':
        chart()
        print()
        print(Fore.GREEN + '           Continue? Y or N : ', end='')
        ans = input().strip().lower()             # strip() removes any spaces before or after user input
        if ans == 'y':                            # shorter version 'continue Y or N' after printing breaker chart
            main()
        else:
            print()
            print(Fore.MAGENTA + '                            Departing -' + Fore.GREEN + '   *** BREAKERVILLE ***')

        playsound('train whistle.wav')

        time.sleep(2) # delay to exit program
        sys.exit()

    elif ans != 'y':
        print()
        print(Fore.MAGENTA + '                            Good Day -' + Fore.GREEN + '   *** BREAKERVILLE ***')

        playsound('train whistle.wav') #CURRENTLY USING

        time.sleep(2)  # delay to exit program

        sys.exit()

    else:
        main()


main()

1 Ответ

0 голосов
/ 14 июля 2020

Для записей: Проблема устраняется указанием полного пути к звуковому файлу. Вероятно, это связано с реализацией воспроизведения и тем, как он определяет текущий рабочий каталог. Пожалуйста, обратитесь к https://pyinstaller.readthedocs.io/en/stable/runtime-information.html#run -time-information для лучшего понимания этого topi c с pyinstaller

...