夜owl

困到睡不着
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

python学习笔记-PyInstaller打包成软件包

Posted on 2025-11-19 17:14  夜owl  阅读(0)  评论(0)    收藏  举报

1. PyInstaller 介绍

1.1. 什么是 PyInstaller?

PyInstaller 是一个用于将 Python 程序打包成独立可执行文件的工具,支持 Windows、Linux 和 macOS 操作系统。它可以将 Python 脚本及其依赖的库和文件打包为一个独立的应用程序,这样用户在没有安装 Python 的情况下也可以运行程序。

1.2. 安装 PyInstaller

在命令行中使用 pip 安装 PyInstaller:

pip install pyinstaller

2. Pyinstall使用

2.1. 打包 Python 程序

使用 PyInstaller 打包 Python 程序时,执行以下命令:

pyinstaller your_script.py

这将会:

  • 在当前目录创建一个 dist 文件夹,其中包含了打包好的可执行文件。
  • 生成一个 build 文件夹,其中包含了打包过程中的临时文件。
  • 生成一个 .spec 文件,这个文件用于配置打包过程。

2.1.1. 常用选项

  • --onefile:将所有内容打包成一个单独的可执行文件。

    pyinstaller --onefile your_script.py

  • --windowed:禁止在运行时显示命令行窗口(适用于 GUI 程序)。

    pyinstaller --windowed your_script.py

  • --icon=icon.ico:为生成的可执行文件指定一个图标。

    pyinstaller --icon=icon.ico your_script.py

  • --add-data=SOURCE:DEST:将额外的文件(如数据文件)打包到程序中。在 Windows 系统中,源路径和目标路径之间需要用分号(;)分隔:要将文件放入顶级应用程序目录,请使用 . 作为 dest_dir。
    pyinstaller --add-data="data.txt;." your_script.py

    在 Windows 系统上,分隔符使用分号 ;,而在 Linux/macOS 系统上,使用冒号 :
    参考

pyinstaller --onedir --windowed --icon="D:\05_Code\python\bugzila\favicon.ico" --add-data="D:\05_Code\python\bugzila\paths.json:." "D:\05_Code\python\bugzila\fetch_buginfo_by_API_UI.py"

2.2. 打包后的文件结构

当你使用 PyInstaller 打包程序时,以下是生成的文件和文件夹结构:


your_script/
│
├── dist/
│   └── your_script.exe          # 最终的可执行文件
│
├── build/
│   └── your_script/             # 临时构建文件
│
├── your_script.spec             # 配置文件,用于定制打包过程
└── your_script.py               # 原始的 Python 脚本

2.3. 自定义配置(使用 .spec 文件)

PyInstaller 生成的 .spec 文件用于定制打包过程。如果你想要更精细的控制(例如指定多个数据文件、修改打包的方式等),可以编辑这个文件并使用它来重新打包:

pyinstaller your_script.spec

.spec 文件中,你可以配置以下内容:

  • 隐藏控制台窗口:设置 console=False 来避免在运行时弹出控制台窗口(适用于 GUI 应用程序)。
  • 包含额外的数据文件或依赖库:可以通过 datasbinaries 选项将额外的资源文件添加到打包文件中。

3. 注意事项和问题

  • 调试:如果在打包过程中遇到问题,可以加上 --debug 参数来进行调试。

    pyinstaller --debug your_script.py

  • 文件路径问题:PyInstaller 打包后的程序可能会出现相对路径问题。解决方法是使用 sys._MEIPASS 来获取程序的运行路径。

    python

    
    import sys
    import os
    
    if hasattr(sys, '_MEIPASS'):
        base_path = sys._MEIPASS
    else:
        base_path = os.path.abspath(".")
    
  • 文件权限问题,确保附带打包文件路径存在,

File "fetch_buginfo_by_API_UI.py", line 537, in <module>
  File "fetch_buginfo_by_API_UI.py", line 46, in load_paths
PermissionError: [Errno 13] Permission denied: 'D:\\05_Code\\python\\bugzila\\dist\\fetch_buginfo_by_API_UI\\_internal\\paths.json'
  • 外部库:某些第三方库(如 PyQt、Pandas 等)可能需要额外的配置或打包选项。

4. icon的获取

4.1. 获取网页的图标favicon

要获取网页的图标,通常是指获取网站的 favicon,它是显示在浏览器标签上的小图标。你可以通过以下几种方式获取网页的图标:

4.1.1. 1. 从浏览器获取网页图标--chrome没用

  • 打开你想获取图标的网站。
  • 在浏览器的地址栏中,网站的 favicon 图标会出现在网站 URL 左侧,通常是一个小的图标。
  • 右键点击图标并选择 "复制图片地址" 或 "保存图片为",然后将其保存到本地。

4.1.2. 2. 查看网页源代码

  • 右键点击网页并选择 "查看页面源代码"。

  • 搜索 <link rel="icon"> 标签,它通常包含 favicon 图标的链接,例如:

    html

    <link rel="icon" href="https://example.com/favicon.ico" />

  • 获取该 URL 即为图标的地址。

4.1.3. 3. 使用在线工具下载图标

  • 一些网站提供下载网站 favicon 的服务。例如:
    • favicon.io:输入网站 URL,网站会自动生成并允许下载网站的 favicon。
    • Real Favicon Generator:一个生成网站图标和下载多种格式 favicon 的工具。

4.2. 网站下载

4.2.1. 推荐的图标网站

如果你需要为你的应用程序或网站选择其他图标,以下是一些免费的图标资源网站:

  1. IconFinder
    提供大量的免费和付费图标,支持多种格式,可以按颜色、大小、主题等筛选。

  2. Flaticon
    拥有超过 300 万个免费的图标资源,提供 SVG、PNG、EPS、PDF 格式的图标,适合各种设计需求。

标库,提供了大量免费的 SVG 图标,广泛用于网站和 Web 应用的设计。

  1. IconArchive --免费的
    提供多种主题的图标,涵盖了操作系统图标、应用图标等,用户可以免费下载并使用。

  2. Material Icons
    Google 提供的 Material Design 图标库,提供丰富的图标,适合 Web 和移动端应用。

5. 官网

PyInstaller Manual — PyInstaller 6.15.0 documentationJupyter 介绍