pyinstaller,一个超酷的 Python 库!

2b4786770600da38cfc42c6218ca1408.jpeg

更多Python学习内容:ipengtao.com

大家好,今天为大家分享一个超酷的 Python 库 - pyinstaller。

Github地址:https://github.com/pyinstaller/pyinstaller


PyInstaller是一个用于将Python应用程序打包成独立可执行文件的工具。这可以将Python应用程序分发给其他人,而无需安装Python解释器或任何依赖项。本文将深入探讨PyInstaller的功能和用法,并提供丰富的示例代码,帮助大家了解如何使用它来打包Python应用程序。

安装PyInstaller

要开始使用PyInstaller,首先需要安装它。

可以使用pip进行安装:

pip install pyinstaller

安装完成后,可以在命令行中运行pyinstaller命令来使用PyInstaller。

基本用法

PyInstaller的基本用法非常简单。只需要在命令行中运行以下命令:

pyinstaller your_script.py

其中your_script.py是要打包的Python脚本文件。PyInstaller将自动分析脚本以及其依赖项,并生成一个独立的可执行文件。

打包选项

PyInstaller提供了许多选项,可以自定义打包过程。以下是一些常用的选项:

  • -F:生成单个可执行文件而不是一个文件夹。

  • -w:生成窗口应用程序,不显示命令行窗口。

  • --onefile:等同于-F选项,生成单个可执行文件。

  • --name:指定生成的可执行文件的名称。

  • --icon:指定可执行文件的图标文件。

  • -p:添加附加的Python模块搜索路径。

  • -i:指定可执行文件的图标文件。

示例代码

以下是一个示例Python脚本,它使用PyInstaller将一个简单的GUI应用程序打包成一个独立的可执行文件:

import tkinter as tk

def say_hello():
    label.config(text="Hello, " + name_entry.get())

app = tk.Tk()
app.title("Hello App")

name_label = tk.Label(app, text="Enter your name:")
name_label.pack()

name_entry = tk.Entry(app)
name_entry.pack()

button = tk.Button(app, text="Say Hello", command=say_hello)
button.pack()

label = tk.Label(app, text="")
label.pack()

app.mainloop()

要使用PyInstaller打包这个应用程序,可以运行以下命令:

pyinstaller --onefile your_script.py

这将生成一个单个可执行文件,可以将它分发给其他人,而无需安装Python或tkinter库。

实际应用场景

当使用PyInstaller时,它可以在各种实际应用场景中发挥作用。以下是一些具体的示例代码,演示了如何在这些场景中使用PyInstaller。

1. 打包GUI应用程序

示例:将一个Python Tkinter GUI应用程序打包成独立可执行文件

import tkinter as tk

def say_hello():
    label.config(text="Hello, " + name_entry.get())

app = tk.Tk()
app.title("Hello App")

name_label = tk.Label(app, text="Enter your name:")
name_label.pack()

name_entry = tk.Entry(app)
name_entry.pack()

button = tk.Button(app, text="Say Hello", command=say_hello)
button.pack()

label = tk.Label(app, text="")
label.pack()

app.mainloop()

要使用PyInstaller打包这个应用程序,你可以运行以下命令:

pyinstaller --onefile your_script.py

这将生成一个单个可执行文件,可以将它分发给其他人,而无需安装Python或tkinter库。

2. 分发Python脚本工具

示例:将一个Python脚本工具打包成可执行文件

假设有一个用于文件批量处理的Python脚本batch_process.py

import os

def process_files(directory):
    for filename in os.listdir(directory):
        if filename.endswith(".txt"):
            with open(os.path.join(directory, filename), 'r') as file:
                # 处理文件的内容
                pass

if __name__ == "__main__":
    directory = input("Enter the directory path: ")
    process_files(directory)

可以使用PyInstaller将它打包成可执行文件,然后用户可以在命令行中运行它来批量处理文件。

pyinstaller --onefile batch_process.py

3. 分发Python工具集

示例:将一组Python脚本打包成一个工具集

假设有一组相关的Python脚本,它们一起构成了一个工具集,用于数据分析和可视化。可以使用PyInstaller将这些脚本打包成一个单独的可执行文件,使其更容易在不同环境中使用。

pyinstaller --onefile data_analysis_toolkit.py

4. 打包数据文件

示例:将数据文件打包到可执行文件中

假设有一个Python应用程序,它需要访问一些数据文件,如配置文件、图像或数据集。可以使用PyInstaller将这些数据文件打包到可执行文件中,以便在任何地方运行应用程序时都可以访问这些数据文件。

import os
import json

def read_config():
    config_file = os.path.join(os.path.dirname(__file__), 'config.json')
    with open(config_file, 'r') as f:
        config = json.load(f)
    return config

if __name__ == "__main__":
    config = read_config()
    print("Config:", config)

使用PyInstaller打包时,确保在应用程序中使用相对路径来访问数据文件。

5. 保护源代码

示例:将Python代码打包成可执行文件以保护源代码

如果希望将Python代码分发给其他人,但不想将源代码暴露出去,可以使用PyInstaller将代码打包成可执行文件。

pyinstaller --onefile --noconsole your_script.py

添加--noconsole选项可以确保生成的可执行文件没有命令行窗口,从而隐藏源代码。

总结

PyInstaller是一个强大的工具,用于将Python应用程序打包成独立可执行文件。通过本文的介绍和示例代码,应该已经对PyInstaller的功能和用法有了深入的了解,可以开始使用它来分发Python应用程序,以满足各种应用需求。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

  100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

8e22f50ff94ce5f4e49ef08171c73f11.png

点击“阅读原文”,获取更多学习内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/319203.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leading Dimension是什么

在LAPACK中频繁出现Leading Dimension(中文翻译为“主维度”),那么它是什么呢? 首先了解行主序(Row-Major)和列主序(Column-Major)的概念: Given a matrix A of shape …

宝塔nginx部署前端页面刷新报404

问题: 当我们使用脚手架打包前端项目的时候,如果前端项目并没有静态化的配置,如以下 当我们刷新页面,或进行路由配置访问的时候就会报404的错误 原因: 这是因为通常我们做的vue项目属于单页面开发。所以只有index.html…

Cocos 使用VsCode调试-跨域问题

解决方案: 在添加完debug配置后 在项目文件夹中打开vscode然后找到launch.json 这个runtimeArgs参数在原本的配置中是没有的,给他添加上去 "runtimeArgs": ["--disable-web-security" ] 原理: 禁用浏览器跨域检查(仅用于调试&…

格密码基础:SIS问题的定义与理解

目录 一. 介绍 二. SIS问题定义 2.1 直观理解 2.2 数学定义 2.3 基本性质 三. SIS与q-ary格 四. SIS问题的推广 五. Hermite标准型 六. 小结 一. 介绍 short interger solution problem短整数解问题,简称SIS问题。 1996年,Ajtai首次提出SIS问…

物联网介绍

阅读引言: 本文从多方面叙述物联网的定义以及在物联网当中的各种通信的介绍。 一、物联网的定义 1.1 通用的定义 物联网(Internet of Things,IOT;也称为Web of Things)是指通过各种信息传感设 备,如传感器、…

基于51单片机的智能热水器设计

需要全部文件请私信关注我!!! 基于51单片机的智能热水器设计 摘要一、绪论1.1 选题背景及意义1.2 完成目标与功能设计 二、硬件系统设计2.1 硬件完成要求2.2 方案选择2.3 电源电路设计2.4 键盘电路2.5 蜂鸣器报警电路2.6 温度检测电路2.7 红…

Web前端-移动web开发——flex布局

移动web开发——flex布局 1.0传统布局和flex布局对比 1.1传统布局 兼容性好布局繁琐局限性,不能再移动端很好的布局 1.2 flex布局 操作方便,布局极其简单,移动端使用比较广泛pc端浏览器支持情况比较差IE11或更低版本不支持flex或仅支持部…

AWS-SAA-C03认证——之基础知识扫盲

文章目录 前言一、Amazon ECS二、 Amazon EKS三、Amazon EC2四、Elastic Beanstalk五、AWS Fargate六、 AWS Lambda (serverless)七、Amazon EBS7.1 EBS生命周期 八、Amazon Elastic File System (EFS) -共享文件系统九、什么是 Amazon S3?9.…

wechatpay-java 部署linux报错

ruoyimall部署linux环境报错 报错现象 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name wechatPayService: Unsatisfied dependency expressed through field service; nested exception is org.springframework.beans.fa…

数据结构排序——计数排序和排序总结(附上912. 排序数组讲解)

数据结构排序——计数排序和排序总结 现在常见算法排序都已讲解完成,今天就再讲个计数排序。再总结一下 文章目录 1.计数排序2.排序总结3.排序oj(排序数组)题目详情代码思路 1.计数排序 计数排序是一种非基于比较的排序算法,它通…

C#中的反射(Reflection)使用经典案例

文章目录 1. 动态加载和调用类的方法2. 记录用户修改行为3. 调用私有构造函数4. 泛型类型的动态创建和使用5. 动态类型转换与检查6. 获取和设置私有、受保护成员7. 枚举程序集、模块、类型等信息8. 处理泛型类型参数9. 动态生成代码或动态编译10. 配置驱动的应用程序扩展注意事…

CBA业务架构师认证考试含金量

CBA业务架构师认证考试的含金量主要体现在以下几个方面👇 1️⃣权威性 💎CBA业务架构师是业务架构师协会提供了一项国际认证计划,该计划可以衡量业务架构师的能力, 并向证明公认的熟练程度的个人授予认证业务架构师(Certified Bus…

第四节课 XTuner 大模型单卡低成本微调实战 作业

文章目录 笔记作业 笔记 XTuner 大模型单卡低成本微调原理:https://blog.csdn.net/m0_49289284/article/details/135532140XTuner 大模型单卡低成本微调实战:https://blog.csdn.net/m0_49289284/article/details/135534817 作业 基础作业:…

限时福利,Adobe InCopy2024下载安装指南

Adobe InCopy 下载链接 https://pan.baidu.com/s/16j5MiXqfGw6puQbgyQnJSQ?pwd0531 #2024版本 1.鼠标右击【InCopy2024(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 InCopy2024(64bit)】。 2.打开解压后的文件夹,鼠…

codeforces(C++ Summation Game)

题目&#xff1a; 翻译&#xff1a; 思路&#xff1a; 1、将数据从大到小排序 2、用前缀和 3、每次用总和减去2倍的乘-1的数&#xff0c;求最大值 代码&#xff1a; #include <iostream> #include<algorithm> using namespace std;void solve() {int n, k, x;ci…

Baumer工业相机堡盟工业相机如何使用OpenCV实现相机图像的显示(C++)

Baumer工业相机堡盟工业相机如何使用OpenCV实现相机图像的显示&#xff08;C&#xff09; Baumer工业相机Baumer工业相机的图像转换为OpenCV的Mat图像的技术背景在NEOAPI SDK里使用OpenCV实现相机图像的显示联合OpenCV实现相机图像的显示测试演示图 工业相机通过使用OpenCV实现…

Docker介绍安装及使用

目录 引言一、什么是Docker?二、Docker的优势三、Docker的架构四、Docker的安装五、Docker的基本使用六、Docker与传统虚拟化的比较七、Docker的应用场景八、总结 引言 在现代的软件开发和部署中&#xff0c;容器化技术已经成为了一种趋势。Docker作为容器化技术的领先者&…

Centos7 系统使用Playbook批量部署多台LNMP环境

使用Playbook批量部署多台LNMP环境 配置absible源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo yum -y install ansible 配置主机清单 定义…

常见的加密算法

加密算法 AES 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥&#xff0c;具体的加密流程如下图&#xff1a; RSA RSA 加密算法是一种典型的非对称加密算法&am…