我在python中创建了一个GUI(使用Tkinter),它使用os.system(' python_file.py')从GUI点击按钮运行python文件。我想通过将Tkinter文件保留为主要文件,使用pyinstaller将所有这些python文件捆绑到单个.exe文件中。
我通过在命令行中执行以下操作来创建.exe文件:
pyinstaller --debug --onefile --noupx tkinter_app.py
目前我的.spec文件如下所示:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['tkinter_app.py'],pathex=['C:\\test'],binaries=[],datas=[],
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, a.binaries, a.zipfiles, a.datas, name='tkinter_app', debug=True, strip=False, upx=False,console=True )
我不确定如何在上面的.spec文件中包含其他python文件,以便整个应用程序正常工作。有人可以帮忙吗?
答案 0 :(得分:0)
最好的方法是使用数组数据
例如:
a = Analysis(['.\\main.py'],
pathex=['.'],
binaries=None,
datas=[ ('.\\Ressources\\i18n', 'i18n'),
('.\\Ressources\\file1.py', '.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
注意:请务必将其放在正确的相对路径中,以便程序能够访问它
编辑:鉴于您的错误消息,问题不在于使用PyInstaller打包,而是在os.system命令中。
os.system相当于打开DOS命令窗口并插入命令 python_file.py
要访问您的python文件,您必须知道:
os.system可用于启动python给定文件的完整路径,如下所示:
os.system("python " + os.path.join(sys._MEIPASS, "python_file.py"))
但是要小心,这只有在系统上安装了python(并包含在syspath中)和exe中时才有效。直接执行你的python文件将发送异常。
答案 1 :(得分:0)
假设您有两个文件:“ my_main.py” 和“ my_functions.py” 。假设“ my_main.py” 从“ my_functions.py”
导入方法执行以下命令:
pyinstaller --onefile my_main.py my_functions.py
生成的单个可执行文件“ my_main.exe” 将在当前工作目录的“ dist” 文件夹下创建。
与Linux / Windows相同的过程。对于两个以上的python文件,只需将它们分开一个空格就可以了。
pyinstaller --onefile my_main.py my_functions.py file3.py file4.py
答案 2 :(得分:0)
未完全验证,可能对您有用。
背景:我在Win和Mac中已经使用PyInstaller
了几次。
回答您的问题:
pyinstaller --onefile tkinter_app.py python_file.py
其他说明:如果main.py
导入some_other.py
(和/或其他一些库,例如上面提到的numpy
,pandas
等... ,则PyInstaller
可以自动识别它,不需要添加--onefile
和其他py文件,只需
pyinstaller main.py