这是我正在运行的代码:
import tkinter
from pygame import mixer
root = tkinter.Tk()
mixer.init()
mixer.music.load(r'C:\Users\George\AppData\Local\Programs\Python\Python36-32\Scripts\Music\Am_lie_-_JY_Suis_Jamais_All_-Yann_Tiersen.wav')
mixer.music.play()
root.mainloop()
我将它转换为带有py2exe的windows .exe:
pyinstaller -w -F -i "C:\Users\George\AppData\Local\Programs\Python\Python36-32\Scripts\test.ico" sound.py
我想要做的是在python执行编译之后将wav文件嵌入python .exe中,这样如果从Sound.exe本身以外的其他计算机上运行它就不需要该文件。
这可能吗?
我对python完全不熟悉。
我发现这段代码可能会完成这项工作,但无法让它发挥作用。
dfiles = [(".","Am_lie_-_JY_Suis_Jamais_All_-Yann_Tiersen.wav"])]
setup(
windows=[{'script':'filename.py'}],
data_files=dfiles,
options={'py2exe':{'bundle_files':1,'compressed':1}}
感谢任何帮助。
答案 0 :(得分:1)
看起来你正在使用PyInstaller而不是py2exe。因此this question是相关的。
我修改了你的mcve示例,使用相对路径来加载我的wav文件。
import tkinter
from pygame import mixer
root = tkinter.Tk()
mixer.init()
mixer.music.load("recy.wav")
mixer.music.play()
root.mainloop()
然后我将该数据文件包含在pyinstaller
命令行中以构建可执行文件:
pyinstaller -w -F -i d_python.ico --add-data "recy.wav;." --log-level=WARN sound_test.py
来自documentation,--add-data
需要src和一个位置,在Windows上以;
和其他地方:
分隔。在这里,我只是从本地目录中抓取它,同样地存储了#39;它位于分布式应用程序的根目录中。
虽然单文件(-F)选项有一点负载开销,但这对我有用。