如何把python(.py或.ipynb)文件打包成可运行的.exe文件?

将 Python 程序打包成可执行的 .exe 文件,通常使用工具如 PyInstaller。这是一个常用的 Python 打包工具,可以将 Python 程序打包成独立的可执行文件,即使没有安装 Python 也能运行。

步骤:

1. 安装 PyInstaller

使用 conda 安装 PyInstaller

如果您使用的是 conda 环境,建议通过 conda 安装 PyInstaller:

bash 复制代码
conda install pyinstaller

这是在 conda 环境中进行安装的推荐方法,因为 conda 会自动处理依赖问题并确保兼容性。

用 pip 安装 PyInstaller

如果您使用的是 pip 作为包管理器,则可以使用以下命令安装:

bash 复制代码
pip install pyinstaller

这是在标准 Python 环境(非 conda 环境)中常用的方法。如果您没有使用 conda,pip 安装也是常见选择。

2. 进入你的项目目录

假设你已经将你的 Python 脚本(例如:main.pymain.ipynb)保存到某个目录中。使用命令行或终端进入这个目录:

bash 复制代码
cd path_to_your_python_script_directory

3. 使用 PyInstaller 打包为 EXE 文件

(1)处理 .py 文件的打包

如果你的 Python 文件已经是 .py 格式,直接使用 PyInstaller 打包即可。

bash 复制代码
pyinstaller --onefile --windowed main.py

如果您想给生成的 .exe 文件添加图标,可以使用 --icon 选项:

bash 复制代码
pyinstaller --onefile --windowed --icon=youricon.ico main.py

说明:

  • --onefile:生成单个可执行文件。
  • --windowed(或 -w):用于 Windows GUI 程序,这样生成的可执行文件在运行时不会弹出控制台窗口(适用于 GUI 应用,如 tkinter 程序)。
  • main.py:是你 Python 脚本的文件名,确保你把它替换成你的脚本名。
  • --icon=youricon.ico:为生成的 .exe 文件设置自定义图标。youricon.ico 是图标文件的路径,你可以替换成你希望使用的图标文件的路径。如果不加这个选项,则生成的 .exe 文件会使用默认图标。请确保图标是.ico格式
    其他可用的参数:
  • --clean:清除先前构建的临时文件(即清除 PyInstaller 构建缓存和临时文件夹)。(如果你想手动删除构建痕迹,也可以删除 PyInstaller 生成的 build/ 和 dist/ 目录,以及 .spec 文件)
  • --add-data: 将额外的文件或文件夹打包进可执行文件。
    例如:pyinstaller --add-data "path/to/datafile;./datafile" script.py
  • --key: 使用加密密钥对源代码进行加密,防止反编译。
    例如:pyinstaller --key "secretpassword" --onefile script.py
    PyInstaller 从 v6.0 开始已经移除了字节码加密功能,即 --key=xxx 参数不再被支持。

(2)处理 .ipynb 文件的打包

Jupyter Notebook (.ipynb) 文件无法直接使用 PyInstaller 打包成 .exe,你需要将 .ipynb 文件转换为 .py 文件后再进行打包。

  • 使用 Jupyter Notebook 提供的 nbconvert 工具:
bash 复制代码
jupyter nbconvert --to script main.ipynb

这会在同目录下生成一个 main.py 文件。

然后使用(1)中的步骤即可。

  • 或者你也可以使用Jupyter Notebook 的 GUI将.ipynb 文件导出为 .py 文件
    • 打开 Jupyter Notebook。
    • 在主页导航到你要转换的 .ipynb 文件所在的目录。
    • 点击文件打开 .ipynb 文件。
    • 在页面顶部的菜单栏中,选择 File(文件) -> Download as(另存为) -> Python (.py)。
    • Jupyter Notebook 会自动将 .ipynb 文件转换为 .py 文件并下载到你的本地。
  • 如果你是使用的vscode的jupyter插件,那也可以用GUI导出
    ctrl+shift+P弹出命令栏,输入导出

4. 查找生成的 EXE 文件

打包完成后,PyInstaller 会在你的项目目录下创建一个 dist 文件夹,里面会有一个单独的 .exe 文件,例如:main.exe。你可以直接运行该文件,程序会以独立的应用程序形式启动。

例子:

假设你的 Python 脚本是 main.py,你可以这样运行:

bash 复制代码
pyinstaller --onefile --windowed main.py

PyInstaller 会在你的目录下创建如下的文件夹结构:

css 复制代码
your_project/
    ├── build/
    ├── dist/
    │   └── main.exe   <-- 这是可执行文件
    └── main.spec

main.exe 就是你打包好的可执行文件。

5. 打包后的依赖问题

在某些情况下,打包后的可执行文件可能仍然依赖某些动态链接库或系统文件。如果你发现生成的 exe 文件在其他电脑上运行时缺少某些文件,可以考虑将程序打包成 --onedir 格式,并将整个目录一起分发。此命令如下:

bash 复制代码
pyinstaller --onedir --windowed main.py

这将生成一个包含所有依赖文件的目录,用户可以通过点击该目录中的 main.exe 文件来启动程序。

6. 使用 .spec 文件自定义打包(可选)

PyInstaller 会生成一个 .spec 文件,供你自定义打包过程。你可以在生成的 .spec 文件中修改打包的行为,然后再次使用 .spec 文件打包:

bash 复制代码
pyinstaller your_spec_file.spec
相关推荐
这是程序猿3 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
芳草萋萋鹦鹉洲哦3 小时前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
爱学习的小邓同学3 小时前
C++ --- 多态
开发语言·c++
颜*鸣&空3 小时前
QT实现串口通信+VSPD+串口调试工具
开发语言·qt
AndrewHZ3 小时前
【图像处理基石】如何在图像中提取出基本形状,比如圆形,椭圆,方形等等?
图像处理·python·算法·计算机视觉·cv·形状提取
槁***耿4 小时前
JavaScript在Node.js中的事件发射器
开发语言·javascript·node.js
U***49834 小时前
JavaScript在Node.js中的Strapi
开发语言·javascript·node.js
@大迁世界4 小时前
相信我兄弟:Cloudflare Rust 的 .unwrap() 方法在 330 多个数据中心引发了恐慌
开发语言·后端·rust
大侠课堂4 小时前
C#经典面试题100道
开发语言·c#
X***E4634 小时前
PHP在电商中的订单处理
开发语言·php