一、错误描述
pyqt界面,选择表格,处理数据。
pyinstaller
打包后,选择表格时显示缺少openpyxl
。
安装:
conda activate pyqt
pip install openpyxl
打包命令加上:--hidden-import=openpyxl
重新打包后运行exe,显示缺少:openpyxl.cell._writer
二、解决
打包命令中手动模块导入改成:--hidden-import=openpyxl.cell._writer
而不是:--hidden-import=openpyxl
我的打包命令:
pyinstaller -F --paths=D:\anaconda\envs\pack\Lib\site-packages --python=D:\anaconda\envs\pack\python.exe --noconsole --hidden-import=openpyxl.cell._writer --name=测试 test.py
其中:
--paths=D:\anaconda\envs\pack\Lib\site-packages
是项目使用的conda虚拟环境
--python=D:\anaconda\envs\pack\python.exe
是这个虚拟环境中的python解释器。
--noconsole
表示无控制台界面,因为这个程序是QT界面,不需要控制台输入输出。
--hidden-import=openpyxl.cell._writer
指明脚本中不可见的导入关系。(程序导入了A,A使用了B,B使用了C,pyinstaller有可能解析不到。)
--name=测试
为exe文件名称
test.py
为要打包的主程序
🟢基础知识:
conda虚拟环境下使用pyinstaller打包程序为exe
建议新建虚拟环境,而不是使用默认环境(base),多个项目使用相同环境,环境会很臃肿,且库之间的版本依赖可能会被破坏。
在新的环境中,安装项目所需库即可,conda和pip方式都可以的。(首先activate激活这个环境,再安装)
🟠注意点:
- 进入项目目录打包;
- 进入项目使用的虚拟环境;
- 在虚拟环境中安装pyinstaller。
三、openpyxl 和 pandas
-
openpyxl 库:
- 安装和导入:首先,你需要使用
pip install openpyxl
命令安装 openpyxl 库,然后在 Python 脚本中导入它(import openpyxl
)。 - 打开 Excel 文件:使用
openpyxl.load_workbook()
函数打开 Excel 文件,例如:workbook = openpyxl.load_workbook('example.xlsx')
。 - 选择工作表:通过工作表名称或索引选择要操作的工作表,例如:
worksheet = workbook['Sheet1']
或worksheet = workbook.worksheets[0]
。 - 读取单元格数据:使用
worksheet.cell(row, column).value
方法读取指定单元格的数据,例如:data = worksheet.cell(1, 1).value
。 - 写入单元格数据:使用
worksheet.cell(row, column).value
方法写入指定单元格的数据,例如:worksheet.cell(1, 1).value = 'Hello'
。 - 保存 Excel 文件:使用
workbook.save()
方法保存对 Excel 文件的修改,例如:workbook.save('example.xlsx')
。
- 安装和导入:首先,你需要使用
-
pandas 库:
- 安装和导入:使用
pip install pandas
命令安装 pandas 库,然后在 Python 脚本中导入它(import pandas as pd
)。 - 读取 Excel 文件:使用
pandas.read_excel()
函数读取 Excel 文件,例如:dataframe = pd.read_excel('example.xlsx')
。 - 数据操作:使用 pandas 提供的丰富功能进行数据操作,例如筛选、排序、分组、聚合等。
- 写入 Excel 文件:使用
dataframe.to_excel()
函数将 DataFrame 数据写入 Excel 文件,例如:dataframe.to_excel('output.xlsx', index=False)
。
- 安装和导入:使用
使用 openpyxl 库示例:
import openpyxl
# 打开 Excel 文件
workbook = openpyxl.load_workbook('example.xlsx')
# 选择工作表
worksheet = workbook['Sheet1']
# 读取单元格数据
data = worksheet.cell(row=1, column=1).value
print(data) # 输出第一个单元格的数据
# 写入单元格数据
worksheet.cell(row=1, column=2).value = 'World'
# 保存 Excel 文件
workbook.save('example.xlsx')
使用 pandas 库示例:
import pandas as pd
# 读取 Excel 文件
dataframe = pd.read_excel('example.xlsx')
# 打印表格数据
print(dataframe)
# 数据操作示例,计算列的和
sum_column = dataframe['Column1'].sum()
print(f"Sum of Column1: {sum_column}")
# 写入 Excel 文件
dataframe.to_excel('output.xlsx', index=False)
通过这两个库,你可以使用 Python 读取、写入、修改和处理 Excel 表格中的数据。openpyxl 提供了更底层的操作,适用于对 Excel 文件的低级控制,而 pandas 提供了更高级、更便捷的数据操作功能,适用于大规模数据处理和分析。
四、pyinstaller 常用选项
PyInstaller 支持许多选项,以便你根据需要自定义打包过程。一些常用的选项包括:
-
打包选项:
-F
或--onefile
:生成单个可执行文件。-D
或--onedir
:生成一个包含多个文件的目录。-w
或--windowed
:创建一个窗口应用程序,没有控制台窗口。-c
或--console
:创建一个带有控制台窗口的命令行应用程序。-m
或--name
:指定生成的可执行文件的名称。--add-data
:添加额外的数据文件到可执行文件中。
-
导入选项:
-p
或--paths
:添加搜索Python模块的路径。--hidden-import
:指定需要手动导入但不在源代码中明确导入的模块。
-
打包配置选项:
--name
:指定生成的可执行文件的名称。--icon
:指定可执行文件的图标文件。--version-file
:指定版本信息文件。--upx-dir
:指定UPX可执行文件压缩工具的目录。
-
调试选项:
--debug
:生成带有调试信息的可执行文件。
-
优化选项:
-O
或--optimize
:使用优化编译Python文件。--noconfirm
:禁用优化编译确认提示。
-
其他选项:
-h
或--help
:显示帮助信息。--clean
:清理临时文件。--noconfirm
:在覆盖现有输出目录时不进行确认。--noconsole
:不显示控制台--python
:指定python解释器的路径。
这只是一些常用的PyInstaller参数,实际上有更多选项可用于更复杂的定制。你可以使用pyinstaller --help
命令来查看完整的参数列表和说明。
例如,要生成一个单独的可执行文件并指定其名称,你可以使用以下命令:
pyinstaller -F -n my_app my_script.py
这将生成一个名为 my_app
的单独可执行文件。