目录
- 1. 命令
- 2. 安装
- 2.1 PyInstaller
- 2.2 cx_Freeze(笔者未用过)
- 3. 打包示例
- 3.1 在 pycharm 中执行
- 3.2 若使用打包命令时报错
- 3.3 路径问题
python打包成可执行文件,用于在没有Python环境的地方运行该程序,与qt打包类似。(笔者写的qt打包地址:https://blog.csdn.net/qq_43700779/article/details/136994534)
1. 命令
pyinstaller --onefile --hidden-import=opencv-python --hidden-import=can --hidden-import=canlib --hidden-import=python-can --hidden-import=can.interfaces.kvaser replay_tool_22D5.py
这行命令是用于使用PyInstaller工具将名为replay_tool_22D5.py的Python脚本打包成一个独立的可执行文件。
具体来说,命令中的各个参数的含义如下:
- –onefile: 这个参数指示 PyInstaller 将生成一个单一的可执行文件,而不是生成多个文件。
- –hidden-import=opencv-python: 这个参数指示 PyInstaller 在打包过程中包含 opencv-python 模块,即使它没有在脚本中明确导入。
- –hidden-import=can, --hidden-import=canlib,–hidden-import=python-can,–hidden-import=can.interfaces.kvaser: 这些参数指示 PyInstaller在打包过程中包含指定的隐藏模块,即使它们没有在脚本中明确导入。
- replay_tool_22D5.py: 这是要打包的Python脚本的文件名。
通过这个命令,PyInstaller将会将replay_tool_22D5.py以及指定的隐藏模块打包成一个独立的可执行文件,该文件可以在没有Python解释器的情况下在其他计算机上运行。
2. 安装
对于包含多个 .py 文件的 Python 工程,可以使用 PyInstaller 或 cx_Freeze 等工具来打包成一个可执行文件。
2.1 PyInstaller
使用 PyInstaller 打包包含多个 .py 文件的 Python 工程的步骤:
1.安装PyInstaller:在命令行中执行 pip install pyinstaller 来安装 PyInstaller。
2.运行PyInstaller:在命令行中进入Python工程的根目录,然后执行 pyinstaller --onefile your_main_script.py,其中
your_main_script.py 是主要 Python 脚本文件。PyInstaller 将会自动检测并包含主要脚本文件所依赖的其他 .py 文件。
2.2 cx_Freeze(笔者未用过)
使用 cx_Freeze 打包包含多个.py文件的Python工程的步骤:
1.安装cx_Freeze:在命令行中执行 pip install cx_Freeze 来安装 cx_Freeze。
2.创建setup.py文件:在Python工程的根目录中创建一个名为 setup.py 的文件,内容类似如下:
from cx_Freeze import setup, Executable
setup(
name="YourProgram",
version="1.0",
description="Description of your program",
executables=[Executable("your_main_script.py")]
)
其中 your_main_script.py 是主要 Python 脚本文件。
注:如果系统中有多个 Python 版本(比如Python 2和Python 3),确保使用正确的 pip 命令来安装 PyInstaller。例如:Python 3,应该使用 pip3 install pyinstaller 命令来安装 PyInstaller。
3.运行cx_Freeze:在命令行中进入 Python 工程的根目录,然后执行 python setup.py build。这将会使用 cx_Freeze 创建一个包含所有依赖的可执行文件。
无论选择使用 PyInstaller 还是 cx_Freeze,都应该能够将包含多个.py文件的Python工程打包成一个可执行文件。
3. 打包示例
3.1 在 pycharm 中执行
这个 .spec 文件是该程序的很多依赖文件或者库,第一次打包后就会有这个文件的存在
可修改该 .spec 文件来包含指定文件或库
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['aragen'],
pathex=[],
binaries=[],
datas=[('./generator/parser/schema', './generator/parser/schema'),('./generator/templates', './generator/templates')],
hiddenimports=['generator.generator.lib_binding.vsomeip_binding', 'generator.generator.lib_binding.fastdds_binding', 'generator.generator.lib_binding.iceoryx_binding'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='aragen',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
3.2 若使用打包命令时报错
不报错当然你好我好大家好,有报错就解决报错即可,
这多半是由于使用路径不对造成的,pycharm 并没有找到 pyinstaller 的存在(即便你是安装了pyinstaller):
3.3 路径问题
解决方法一
带上完整的 pyinstaller 路径即可
该路径是怎么找到的?
在右下角的当前使用的 python 解释器的位置找到的,
点击查看当前解释器的设置:
顺着路径在文件系统中找,Scripts 文件下就有该插件:
解决方法二
切换目录路径到 pyinstaller.exe 存在的目录
打包后的文件也会在当前路径下
月落乌啼霜满天,江枫渔火对愁眠。
2024年3月24日21:03:26