Python Forum
.wav file not playing in python .exe program
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
.wav file not playing in python .exe program
#1
I have tried simpleaudio, playsound, and winsound in my program to be able to include a small wave file. Each one of these works fine when running my script in Pycharm. The problem is when I use 'pyinstaller --onefile' to make the self-executable standalone program (exe). I then will just hear a 'windows' ring instead of the wave file. I'd appreciate help on this. Paul Heres the code that I am constantly editing, I'm a beginner. The program works well(except for the wave file). I've commented out simpleaudio and playsound because I most recently tried winsound. this is just a practice copy so its full of comments and probably looks bad.


#import simpleaudio as sa
#from playsound import playsound
import os
from chart import chart
from BreakerZones import BreakerZones
import winsound
#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

#winsound.PlaySound('bell fade', winsound.SND_FILENAME)
print(Fore.MAGENTA + '                             Arriving-' + Fore.GREEN + '    *** BREAKERVILLE USA ***')

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)

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 ***')

        ''' filename = 'train whistle.wav'
        wave_obj = sa.WaveObject.from_wave_file(filename)
        play_obj = wave_obj.play()
        play_obj.wait_done()  # Wait until sound has finished playing'''

        #playsound('train whistle.wav')
        winsound.PlaySound('train whistle', winsound.SND_FILENAME)
        #time.sleep(2) # delay to exit program
        sys.exit()

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

        '''filename = 'train whistle.wav'
        wave_obj = sa.WaveObject.from_wave_file(filename)
        play_obj = wave_obj.play()
        play_obj.wait_done()  # Wait until sound has finished playing'''

        #playsound('train whistle.wav')
        winsound.PlaySound('train whistle', winsound.SND_FILENAME)
        #time.sleep(2)  # delay to exit program
        sys.exit()

    else:
        main()


main()
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  playing .wav sound file with sounddevice shift838 5 2,318 Mar-11-2022, 07:58 PM
Last Post: menator01
  gnome terminal playing with python jmex 12 6,031 Feb-03-2021, 01:38 PM
Last Post: Axel_Erfurt
  Playing mp3 file to specific device treii28 3 3,460 Mar-26-2019, 04:02 PM
Last Post: Larz60+
  Python + OpenCV + Tkinter playing video help Hanban 1 17,920 May-08-2017, 01:25 AM
Last Post: Joseph_f2

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020