pyinstaller onefile不加载音频,只加载图像。当我测试没有onefile的pyinstaller时,应用程序工作正常,如果我测试pyinstaller onefile并将音频放在文件夹dist中,应用程序也工作正常。
我也测试了"resource_path",但不起作用。
错误[警告][AudioSDL2]无法加载som/som. ogg:b '使用空源混合加载WAV_RW'
应用程序工作正常,但声音无法加载。
我有:python 3.8.10
pyinstaller 5.6.2 pyinstaller-挂钩-控件== 2022.13
"kivy [base]" kivy_示例-非二进制kivy
这里有一个例子
main.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
import os, sys
from kivy.resources import resource_add_path
from sound import *
'''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)
resource_path('som/Bleeping-Demo.ogg')'''
class Gerenciador(ScreenManager):
pass
class Menu(Screen):
def on_enter(self, *args):
self.sonoplastia = Sonoplastia()
self.sonoplastia.sonoplastiaAstronautaGeral['menu'].volume = .5
self.sonoplastia.sonoplastiaAstronautaGeral['menu'].loop = True
self.sonoplastia.sonoplastiaAstronautaGeral['menu'].play()
class teste(App):
def build(self):
return Gerenciador()
if __name__ == '__main__':
if hasattr(sys, '_MEIPASS'):
resource_add_path(os.path.join(sys._MEIPASS))
teste().run()
sound.py
from kivy.core.audio import SoundLoader
class Sonoplastia():
sonoplastiaAstronautaGeral = {'menu': SoundLoader.load('som/som.ogg')}
teste.kv
#:kivy 2.0
<Gerenciador>
Menu:
id: menu_screen
name: 'menu'
<Menu>:
id: menu
BoxLayout:
orientation:'vertical'
size_hint: 1, 1
Label:
canvas.before:
Color:
#rgba: 1, 1, 0, 1
Rectangle:
source: 'imagens/background.png'
size: self.size
pos: self.pos
teste.spec
一个三个三个一个
我想要pyinstaller的一个文件来加载音频。
1条答案
按热度按时间ffscu2ro1#
我不确定这是否能解决您的问题,但您可以通过更改
sound.py
中的路径来修复应用程序无法找到.ogg
文件的问题: