我对Python编程很陌生,所以我可能会遗漏一些非常明显的东西。
我已经在Python中完成了一个运行正常的小程序,但是我想与同事分享它,所以我想要做一个独立版本,我尝试使用Pyinstaller,因为它似乎是最简单易用,但生成的exe文件到目前为止似乎无法正常工作。
所以我将我的程序划分为一个名为" main.py"的主文件。和我从同一文件夹中的其他python文件中导入的3个额外函数。它使用一个excel电子表格和一个.ico图像作为tkinter中的徽标。
我的第一次尝试只使用命令:
pyinstaller main.py
它会生成exe文件,但在执行它时,它只会打开一个黑色窗口,而不会发生任何其他事情。
我正在阅读pyinstaller的文档,并认为我可能还需要添加其他python文件和额外的文件。对于excel和图像,我没有设法理解我需要如何编写它,我尝试添加以下作为选项,但它给了我一个错误
--add-data <logo.ico> --add-data <WAE_SW_NameCnvtn.xlsx>
没有这些,我设法使用以下命令再次生成exe文件:
pyinstaller --windowed --name=NameCnvtn main.py read_description.py read_quantity.py word_finder.py
这似乎在dist文件夹中添加了不少文件,当我执行exe文件而不是黑色窗口时,它表示&#34;未能执行脚本main&#34;,我认为这是参考我的main.py文件。
如果它有帮助,我使用python 3.6.4开发它,它使用tkinter和openpyxl。
感谢您的帮助。
答案 0 :(得分:1)
我设法今天成功运行了exe。我在spec文件中手动添加了excel和数据行下的ico,再次编译它并在之后正确运行。这是spec文件,以防有人遇到与我相同的问题。
# -*- mode: python -*-
block_cipher = None
a = Analysis(['main.py', 'read_description.py', 'read_quantity.py', 'word_finder.py'],
pathex=['C:\\Users\\j.berjano\\Desktop\\app_test'],
binaries=[],
datas=[('WAE_SW_NameCnvtn.xlsx','.'),('logo.ico','.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='NameCnvtn',
debug=False,
strip=False,
upx=True,
console=False,
icon='logo.ico')
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='NameCnvtn')
&#13;