草庐IT

Python升级之路( Lv13 ) pyinstaller 使用详解

时间静止不是简史 2024-05-10 原文

Python系列文章目录

第一章 Python 入门
第二章 Python基本概念
第三章 序列
第四章 控制语句
第五章 函数
第六章 面向对象基础
第七章 面向对象深入
第八章 异常机制
第九章 文件操作
第十章 模块
第十一章 GUI图形界面编程
第十二章 pygame游戏开发基础
第十三章 pyinstaller 使用详解

pyinstaller 使用详解

前言

本章主要对 pyinstaller 的安装, 使用和打包方式做了详细的探究

什么是 pyinstaller

pyinstaller 是Python 提供的一个第三方拓展库模块. 它的功能是将我们的 Python 程序打包成可执行的 .exe 程序

安装

方式一 pycharm安装

  1. 安装 pyinstaller 模块 在 pycharm 中操作:file-->setting-->Project:xxx -->Project interpretor,再点击(加号)

  2. 在新弹窗中输入要下载的第三方模块, 然后点击该模块, 最后点击左下角安装即可

方式二 命令行安装

命令行安装: 在命令行输入一下命令进行安装

pip install pyinstaller

使用

基本使用

最基本的使用方式:

pyinstaller  xxx.py

注意: 后面可以跟多个python文件, 但注意用空格隔开

参数介绍

pyinstall 打包时, 可以跟各种参数, 这些参数用来拓展打包时需要的定制需求

常用参数如下表所示:

参数名作用
-F / --onefile打包一个成单个文件, 多个.py文件或者需要打包其他资源(图片,音频) 不要使用
-D / --onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码
-w / –windowed/–noconsole程序启动的时候不会打开命令行 (只对Windows有效, 编写GUI程序时使用此参数有用)
-i /–icon指定打包之后的.exe文件的图标
-n / –name=NAME指定打包之后的.exe 文件的名称
-v FILE /–version=FILE指定打包之后的.exe 文件的版本信息. FILE: 版本信息描述文件编写请点击查看
-a/--ascii不包含 Unicode 字符集支持
-d/--debug产生 debug 版本的可执行文件
-c /--console/ --nowindowed使用命令行执行(此参数默认开启)
-v / --version查看当前pyinstaller版本
--add-data <源目录;目标目录or源目录:目标目录>将源目录文件额外打包到.exe程序所在目标目录. ; Windows下使用, :Linux下使用
-h/--help查看该命令帮助信息

利用自带帮助文档进行学习

下载pyinstaller 之后, 可以输入pyinstaller -h 或者 pyinstaller --help , 来查看其自带的帮助文档

现在将比较重要介绍的截图下

打包

方式一 利用命令行打包

利用上面所学到的参数, 对文件进行打包

  1. 将文件打包成 xxx.exe

    pyinstaller -F xxx.py
    
  2. 将文件打包成 xxx.exe, 并且运行时不打开命令行(tkinter程序打包时使用)

    pyinstaller -F -w xxx.py
    
  3. 打包上一章坦克大战源码
    将源码打包成 坦克大战v1.0.1.exe 并且运行时不打开命令行,
    .\img\p1tankU.gif 设置为程序图标, 并将当前 .\img\ 目录下文件打包到 .exe程序运行所在目录, 且命名为 .\img\

    pyinstaller -w -D  -i .\img\p1tankU.gif   -n "坦克大战v1.0.1"   tank26.py --add-data ".\img\;.\img\"
    

方式二 利用图形界面打包

auto-py-to-exe 用于将Python程序打包成可执行文件的图形化工具
该工具的作用是将我们的在图形化界面点击的选项转换成方式一中的命令

  1. 安装方式 :pip install auto-py-to-exe

  2. 启动方式: 命令行输入 auto-py-to-exe

  3. 启动后, 我们只需要根据情况去选择, 然后点击底部蓝色按钮即可

有关Python升级之路( Lv13 ) pyinstaller 使用详解的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐