【发布时间】:2016-04-13 18:41:47
【问题描述】:
1.我使用 python 3.4 tkinter 编写了一个计算器,它使用大量 PNG 图像
2.我尝试使用 cx_Freeze 将其转换为 exe,但我想将其设为一个文件而不是文件夹
3. 所以我决定使用 pyinstaller 并开始创建一个名为“calculator.spec”的规范文件 这就是它的样子,我对此很陌生,并且努力寻找一种方法来确保 PNG 正在被使用,或者只是试图让它工作。此外,我所有的 PNG、calculator.py 和 spec 文件都存储在我桌面上一个名为 Calculator 的文件夹中。
这是我的规范文件的样子:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['calculator.py'],
pathex=['C:\\Users\\Owner\\Desktop\\Calculator'],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=None,
runtime_hooks=None,
excludes=None,
win_no_prefer_redirects=None,
win_private_assemblies=None,
cipher=block_cipher)
a.datas += [('Calculator/+.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\+.png', 'DATA')]
a.datas += [('Calculator/-.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\-.png', 'DATA')]
a.datas += [('Calculator/=.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\=.png', 'DATA')]
a.datas += [('Calculator/0.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\0.png', 'DATA')]
a.datas += [('Calculator/1.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\1.png', 'DATA')]
a.datas += [('Calculator/2.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\2.png', 'DATA')]
a.datas += [('Calculator/3.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\3.png', 'DATA')]
a.datas += [('Calculator/4.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\4.png', 'DATA')]
a.datas += [('Calculator/5.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\5.png', 'DATA')]
a.datas += [('Calculator/6.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\6.png', 'DATA')]
a.datas += [('Calculator/7.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\7.png', 'DATA')]
a.datas += [('Calculator/8.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\8.png', 'DATA')]
a.datas += [('Calculator/9.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\9.png', 'DATA')]
a.datas += [('Calculator/C.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\C.png', 'DATA')]
a.datas += [('Calculator/D.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\D.png', 'DATA')]
a.datas += [('Calculator/Display.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Display.png', 'DATA')]
a.datas += [('Calculator/Div.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Div.png', 'DATA')]
a.datas += [('Calculator/Dot.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Dot.png', 'DATA')]
a.datas += [('Calculator/Error1.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Error1.png', 'DATA')]
a.datas += [('Calculator/Error2.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Error2.png', 'DATA')]
a.datas += [('Calculator/Error3.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Error3.png', 'DATA')]
a.datas += [('Calculator/Error4.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Error4.png', 'DATA')]
a.datas += [('Calculator/Error5.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Error5.png', 'DATA')]
a.datas += [('Calculator/Error6.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Error6.png', 'DATA')]
a.datas += [('Calculator/Exit.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Exit.png', 'DATA')]
a.datas += [('Calculator/Instructions.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\Instructions.png', 'DATA')]
a.datas += [('Calculator/X.png', 'C:\\Users\\Owner\\Desktop\\Calculator\\X.png', 'DATA')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='calculator',
debug=False,
strip=None,
upx=True,
console=False )
4.我进入 cmd,以管理员身份运行,然后输入以下内容:
cd desktop
cd Calculator
pyinstaller --onefile --windowed calculator.spec
然后,它会在 Calculator 文件夹中创建两个名为 build 和 dist 的文件夹
-
build 文件夹包含一堆文件和一个 base_library 和 warncalculator。在 warncalculator 中它说(缺少模块的负载向前跳过):
缺少名为资源的模块 - 由 posix 导入,
C:\Users\Owner\Desktop\Calculator\calculator.py 缺少名为 posix 的模块 - 由 os、C:\Users\Owner\Desktop\Calculator\calculator.py 导入 缺少名为 _datetime.doc 的模块 - 由 _datetime、datetime、C:\Users\Owner\Desktop\Calculator\calculator.py 导入 缺少名为 _posixsubprocess 的模块 - 由子进程导入,C:\Users\Owner\Desktop\Calculator\calculator.py 缺少名为 unicodedata.ucd_3_2_0 的模块 - 由 unicodedata、stringprep、encodings.idna、C:\Users\Owner\Desktop\Calculator\calculator.py 导入
加载更多,但由于字数限制无法放入 它们只是大量缺失的模块
- 在 dist 文件中,有一个名为计算器的应用程序,当我尝试运行它时,它给了我错误“致命错误!” '计算器返回 -1'
我不知道发生了什么,感谢任何帮助, 谢谢关注
【问题讨论】:
-
您可能需要下载 pyinstaller 源代码并运行他们的测试。他们报告说他们的 Windows 测试现在正在通过 - ci.appveyor.com/project/matysek/pyinstaller/branch/develop/job/…。测试应该能够提供更多关于错误的信息
-
另外,你确定使用 pyinstaller 3.0 吗?在此之前没有 py3.x 支持
-
大家好,我去了 cmd 并运行了给我错误的应用程序,它说它无法打开“display.PNG”,因为没有这样的文件或目录。如何确保我的 PNG 文件被包含在内????
标签: python tkinter exe fatal-error