如何把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
相关推荐
深度学习lover1 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
API快乐传递者2 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉3 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer3 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq3 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
阡之尘埃4 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
记录成长java5 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js