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数据类型之Series的具体使用

    那么我们就来详细讲解“pandas数据类型之Series的具体使用”的完整攻略。 什么是Series Series是一个定长的、有序的一维数组,并且可以存储任何数据类型(整数,字符串,浮点数,Python对象等),它与NumPy中的一维数组非常相似。Series和DataFrame是pandas中最为核心的两个数据结构,其他的数据结构都是建立在它们基础之上。…

    python 2023年5月14日
    00
  • 如何将Pandas DataFrame导出到CSV文件

    将Pandas DataFrame导出到CSV文件可以使用Pandas库中的to_csv()方法。以下是详细的操作步骤: 1. 载入Pandas库 import pandas as pd 2. 创建一个Pandas DataFrame df = pd.DataFrame({‘姓名’: [‘张三’, ‘李四’, ‘王五’], ‘年龄’: [20, 25, 30…

    python-answer 2023年3月27日
    00
  • python用pandas数据加载、存储与文件格式的实例

    下面是 Python 使用 Pandas 进行数据加载、存储与文件格式的实例攻略。 加载数据 Pandas 提供了许多函数来加载数据,主要有以下几个函数: read_csv():从 CSV 文件加载数据 read_excel():从 Excel 文件加载数据 read_sql():从 SQL 数据库加载数据 read_json():从 JSON 文件加载数据…

    python 2023年5月14日
    00
  • Pandas中把dataframe转成array的方法

    将 Pandas 中的 dataframe 转换为数组(array)是一个很常见的需求。Pandas是一个基于NumPy构建的数据科学工具包,它提供了许多方便的函数将DataFrame数据转换为NumPy数组。以下是把 dataframe 转换为 array 的几种方法。 方法一:使用to_numpy函数 to_numpy:此方法被广泛广泛使用,可以快速地将…

    python 2023年5月14日
    00
  • 使用Regex从给定的Pandas DataFrame的指定列中提取日期

    首先,我们需要安装Python中的正则表达式库re。在命令行或者jupyter notebook中输入以下命令进行安装: !pip install re 接下来,我们需要对DataFrame中的日期列进行正则匹配并提取出日期。 假设我们有以下DataFrame: import pandas as pd data = {‘日期’: [‘2022/05/01 1…

    python-answer 2023年3月27日
    00
  • python数据处理67个pandas函数总结看完就用

    “python数据处理67个pandas函数总结看完就用”完整攻略 1. 为什么要学习pandas? pandas是一个强大的数据处理库,它能够处理和清洗各种各样的数据,包括表格数据、CSV文件、Excel文件、SQL数据库等等。如果你是一位数据分析师或科学家,学习pandas是必不可少的,因为它可以让你更快地进行数据分析和处理。 2. pandas的基本数…

    python 2023年5月14日
    00
  • 如何比较两个Pandas Dataframes中的值

    要比较两个Pandas DataFrames中的值,可以使用equals()函数。该函数比较两个DataFrame中的每个元素,如果两个DataFrame的值完全相同,则返回True,否则返回False。 以下是比较两个DataFrames的示例代码: import pandas as pd # 创建第一个DataFrame data1 = {‘name’:…

    python-answer 2023年3月27日
    00
  • 如何在Pandas Groupby中把数据框架的行分组到列表中

    在Pandas中的Groupby操作,可以把数据框架中的行或者列分组,然后对分组后的数据进行聚合,统计分析等操作。但是,在实际的应用场景中,有时候需要把分组后的数据框架中的行分别保存到一个列表中。下面是针对这个需求的详细讲解。 首先,我们可以通过Pandas中的Groupby函数对数据进行分组。例如,下面的例子中我们按照“B”列的值进行分组。 import …

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