Pyinstaller 打包发布经验总结

打包发布Python程序是开发中必不可少的一环,而Pyinstaller是一个十分优秀的打包工具,它可将Python代码打包成一个可执行的文件,方便在其他环境中运行。本文将介绍在Windows环境下如何使用Pyinstaller进行打包发布。以下是具体步骤:

安装Pyinstaller

pip install pyinstaller

打包发布

1. 单文件发布

打包为单个exe文件,执行以下命令:

pyinstaller -F your_program.py

执行完命令后,会在当前目录下生成一个名为your_program.exe的可执行文件,其中your_program.py为你要打包的Python代码文件名。

说明:

-F参数表示生成单个可执行文件。

2. 文件目录发布

打包为文件夹,执行以下命令:

pyinstaller your_program.py

执行完命令后,会在当前目录下生成一个名为dist的文件夹,其中包含可执行文件和相关的依赖文件。

说明:

默认情况下,Pyinstaller会将所有依赖的库一起打包到生成的可执行文件中,如果要排除某个库,可以使用--exclude参数。

例如,排除npyscreen库:

pyinstaller --exclude npyscreen your_program.py

3. 添加图标

在生成的可执行文件上添加图标,执行以下命令:

pyinstaller -F -i your_icon.ico your_program.py

说明:

-i参数表示添加图标,其中your_icon.ico为你要添加的图标文件名。

Pyinstaller打包经验总结

  1. 打包时间长,需耐心等待。
  2. 打包后程序体积较大,可能超过几十MB。
  3. 如果程序依赖库较多,可能会出现打包失败或打包后的程序无法运行的情况。
  4. 可以使用--debug参数来调试打包时出现的问题。
  5. 可以通过指定Python版本进行打包,例如:
pyinstaller --name your_program --clean --onedir --distpath ./dist --specpath ./build --add-data "resource;resource" --hidden-import sklearn.metrics _version.py
--additional-hooks-dir ./script --workpath ./build --debug --log-level DEBUG --log-level WARN --log-level INFO your_program.py

该命令使用Python3.7版本进行打包,其中--name参数表示指定打包后的可执行文件名,--add-data参数表示添加资源文件,--hidden-import参数表示指定需要导入的库。

示例1

以下是一个示例Python代码,功能为读取指定目录下的所有图片文件,并将它们进行压缩处理。

import os
from PIL import Image

def compress_images(input_dir, output_dir, max_size):
    for root, dirs, files in os.walk(input_dir):
        for filename in files:
            if not filename.endswith('.jpg') and not filename.endswith('.png'):
                continue
            filepath = os.path.join(root, filename)
            output_path = os.path.join(output_dir, filename)
            if os.path.isfile(output_path):
                continue
            with Image.open(filepath) as img:
                width, height = img.size
                while os.path.getsize(filepath) > max_size:
                    img.thumbnail((width // 2, height // 2))
                    img.save(output_path)
            print(f'{filename} compressed to {os.path.getsize(output_path)} bytes.')

接下来我们使用Pyinstaller将其打包成单个exe可执行文件。

pyinstaller -F compress_images.py

执行完命令后,在当前目录下生成名为compress_images.exe的可执行文件。

示例2

以下是另一个示例Python代码,功能为使用selenium模拟浏览器自动登录网站并抓取数据。

from selenium import webdriver

url = 'https://www.example.com'
username = 'username'
password = 'password'

options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
driver.get(url)

# 输入用户名和密码
driver.find_element_by_id('username').send_keys(username)
driver.find_element_by_id('password').send_keys(password)

# 点击登录按钮
driver.find_element_by_id('login_btn').click()

# 等待页面加载完成
driver.implicitly_wait(10)

# 抓取数据
data = driver.find_elements_by_xpath('//div[@class="content"]/text()')

# 输出数据
print(data)

# 关闭浏览器
driver.quit()

接下来我们使用Pyinstaller将其打包成文件夹。

pyinstaller login.py

执行完命令后,在当前目录下生成一个名为dist的文件夹,其中包含可执行文件和相关的依赖文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pyinstaller 打包发布经验总结 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 在Pandas数据框架中对分类变量进行分组

    在Pandas数据框架中,分组是一种常见的数据操作。当数据中有分类变量时,可通过分组的方式对该变量进行汇总和分析。下面是一份完整的攻略,旨在帮助初学者了解在Pandas数据框架中对分类变量进行分组的操作。 导入库和数据 首先需要导入Pandas库,并读取数据。示例数据集采用了一份有关电影的数据集。 import pandas as pd df = pd.re…

    python-answer 2023年3月27日
    00
  • Python跨文件调用函数以及在一个文件中执行另一个文件

    Python语言中,函数是重要的编程工具,允许开发者将代码块组织成具有一定复杂度的程序。在项目开发中,通常会出现一个函数需要在另一个文件中调用,或者代码需要在文件之间进行复用的情况。那么如何实现Python跨文件调用函数以及在一个文件中执行另一个文件呢?接下来,我们就来介绍一下这个完整攻略。 Python跨文件调用函数 模块 在Python中,向外提供程序的…

    python 2023年5月14日
    00
  • 将Pandas数据框架导出到CSV文件中

    将Pandas数据框架导出为CSV文件是数据处理中非常常见的操作。下面给出完整的攻略: 1. 确认导出路径 在进行导出操作之前,需要确认导出的文件路径和文件名。可以使用Python内置的os包来创建并确认目录是否存在,如果不存在则会自动创建。 import os if not os.path.isdir(‘/path/to/export’): os.make…

    python-answer 2023年3月27日
    00
  • pd.to_datetime中时间object转换datetime实例

    当我们在使用pandas处理时间序列数据时,常常需要将时间object转换成datetime实例,在pandas中可以使用pd.to_datetime()方法完成该任务。下面是转换的具体步骤: 1.将时间object转换成datetime实例 我们可以通过如下代码示例将时间object转换成datetime实例: import pandas as pd df…

    python 2023年5月14日
    00
  • pandas数据处理进阶详解

    pandas数据处理进阶详解 1. pandas简介 pandas是一个强大的Python数据分析工具包,可以轻松地处理和分析各种类型的数据。pandas主要有两个数据结构:Series(序列)和DataFrame(数据框),可以在数据处理和数据分析中灵活运用。更多关于pandas的知识,可以查看官方文档:https://pandas.pydata.org/…

    python 2023年5月14日
    00
  • 详解pandas中Series()和DataFrame()的区别与联系

    详解pandas中Series()和DataFrame()的区别与联系 概述 pandas中最基本的数据结构是Series和DataFrame。Series是一维数组结构,其中每个元素可以是不同的数据类型,而DataFrame是二维表格结构,也可以存储不同数据类型。在这篇文章中,我们将深入研究这两种结构,分析它们的区别和联系。 Series Series是一…

    python 2023年5月14日
    00
  • Python中用append()连接后多出一列Unnamed的解决

    当使用Python的pandas库将多个DataFrame对象合并为一个时,经常会遇到出现“Unnamed”列的问题。这个问题通常是由于DataFrame对象在合并过程中没有正确处理索引或列名造成的。解决这个问题的方法是使用合适的列名和索引,同时避免使用多个DataFrame对象拼接时出现重复的列名和索引。 以下是解决这个问题的攻略: 方案一:明确设置列名和…

    python 2023年5月14日
    00
  • 在Pandas中应用LEFT, RIGHT, MID的方法

    在Pandas中,可以使用Series.str方法结合LEFT、RIGHT和MID函数来提取字符串中的部分信息,例如提取姓名、数字等等。 首先,LEFT函数可以提取字符串的左侧若干个字符,其语法为LEFT(string, num_chars),其中string为待提取的字符串,num_chars为提取的字符数。例如: import pandas as pd …

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部