1 回答
TA贡献1773条经验 获得超3个赞
是的,使用 Tkinter 和 SQLite 制作可执行文件是完全可能的。
Pyinstaller
在虚拟环境中安装后,您应该创建一个main.spec
具有以下格式的文件,以便您有足够的自由来完全自定义您的 exe 文件。根据您的代码,您可能需要更少或更多的功能:
# -*- mode: python -*-
import os
block_cipher = None
current_dir = os.path.dirname(os.path.curdir)
a = Analysis(['main.py'],
# pathex=['output_path'],
pathex=[current_dir],
binaries=[],
datas=[
('img/*.png', 'img'),
('inputs/*.csv', 'inputs'),
('databases/*.db', 'databases'),
('settings.ini', '.'),
],
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,
Tree('documentation/_build/html', prefix='documentation/_build/html/'),
name='Project Name',
debug=False,
strip=False,
upx=True,
console=False)
您应该正确设置output_path和Project Name。此外,此脚本假定您的主文件名为main.py,但您也可以更改它。如您所见,在这种情况下,我捆绑了所有图像、csv 文件、数据库 (SQLite) 甚至从 Sphinx 创建的文档。
然后,您必须调用以下命令:
path_to_pyinstaller/pyinstaller --onefile main.spec --key your_key
path_to_pyinstaller你的virtualenv下安装Pyinstaller的路径在哪里。您还必须设置your_key.
还有其他库也可以使用,例如cx_Freeze,但同样,我通常使用Pyinstaller.
重要的是要记住,在捆绑时,可能会出现一些与相对路径相关的错误。我的解决方案是定义一个resource_path这样的函数:
import sys
# Get the absolute path
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception as e:
# print(e)
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
然后,在调用任何图像、文件或数据库时都应该使用此函数。例如,当连接到 SQLite 时,您应该执行以下操作:
import sqlite3
self.conn = sqlite3.connect(resource_path(database_path))
database_path数据库的相对路径在哪里。
添加回答
举报