学员肖杰,py文件打包成为exe

一.运用场景

一.pyinstaller简介

pyinstaller将Python脚本打包成可执行程序,使在并未有Python环境的机械上运转

新式版是pyinstaller 三.一.1。帮助python二.七和python3.三+。
可运营在Windows,Mac和Linux操作系统下。
但它不是跨编写翻译的,约等于说在Windows下用PyInstaller生成的exe只好运维在Windows下,在Linux下转移的只可以运行在Linux下。

pyinstaller 库的行使

在我们做到1个Python项目或三个先后时,希望将Python的py文件打包成在Windows系统下直接能够运维的exe程序。那里我们介绍一种简易常用的措施,pyinstaller模块

一.1 旧事背景

本人要好用python写了二个小程序发给别的同事用,给他的正是三个.py文件,可是她以为比较艰辛,还要设置环境,他问笔者有未有大约一点的格局,小编给1个exe文件,他就绝不安装环境就足以运作小编的次第,作者心头在想那样麻烦,还要自己跟你打包改成exe,然则不能够,何人叫是好对象了,我就应允他了。

2.pyinstaller在windows下的安装

采用命令pip install pyinstaller就可以
在windows下,pyinstaller要求PyWin3二的帮忙。当用pip安装pyinstaller时未找到PyWin32,会自动安装pypiwin3二

澳门葡京备用网址 1

澳门葡京备用网址 2

出现Successfully installed pyinstaller-三.一.1 pypiwin3二-21九即表示安装成功

PyInstaller是2个十分得力的第一方库,它能够在Windows、Linux、Mac OS X
等操作系统下将 Python 源文件打包,通过对源文件打包,Python
程序能够在并未有安装 Python
的环境中运转,也能够视作2个独门文件方便传递和保管。PyInstaller
供给在命令行(调控台)下用pip 工具安装,如下:

  1. 直接pip安装

一.二 搜索素材

在写c#的时候,面向nuget编制程序(何人叫4渣渣程序员了);在就学python在此以前就以前有好些个零件(和颜悦色的飞起),开头在github和google上搜寻能源,最后发现以下多少个东西
连锁来源

  • PyInstaller:将 Python
    程序转换到独立的执行文书(跨平台)。官网
  • dh-virtualenv:营造并将 virtualenv 虚拟环境作为一个 Debian
    包来发布。官网
  • Nuitka:将脚本、模块、包编写翻译成可推行文件或扩充模块。官网
  • py二app:将 Python 脚本变为单独软件包(Mac OS
    X)。官网
  • py二exe:将 Python
    脚本变为单独软件包(Windows)。官网
  • 学员肖杰,py文件打包成为exe。pynsist:3个用来创设 Windows 安装程序的工具,可以在安装程序中封装
    Python 自身。官网

三.打包

打包的app里并不带有其余源码,但将脚本的.pyc文件打包了。

基本语法:
pyinstaller options myscript.py
常用的可选参数如下:
–onefile 将结果打包成三个可试行文件
–onedir
将有着结果打包到3个文件夹中,该文件夹包涵一个可试行文件和可执行文件实施时索要的正视性文件(默许)
–paths=DI揽胜极光 设置导入路径
–distpath=DIOdyssey 设置将包裹的结果文件放置的渠道
–specpath=DI奥迪Q5 设置将spec文件放置的路子
–windowed 使用windows子系统实行,不会张开命令行(只对windows有效)
–nowindowed 使用调整台子系统实施(暗中同意)(只对windows有效)
–icon=<FILE.ICO>
将file.ico增多为可执行文件的财富(只对windows有效)

如pyinstaller –paths=”D:\Queena” guess_exe.py

:\>pip install pyinstaller 

一.三 技能方案

透过比较,最后挑选了地点例子中的 pyinstaller

四.小实例(windows下)

写好游戏文件guess_exe.py,代码如下:

__author__ = 'qa-2'
# -*- coding:utf-8 -*-
# 摇3次骰子,当总数total,3<=total<=10时为小,11<=total<=18为大
import random
import time

def enter_stake(current_money):
    '''输入小于结余的赌资及翻倍率,未考虑输入type错误的情况'''
    stake = int(input('How much you wanna bet?(such as 1000):'))
    rate = int(input("What multiplier do you want?你想翻几倍?(such as 2):"))
    small_compare = current_money < stake * rate
    while small_compare == True:
        stake = int(input('You has not so much money ${}!How much you wanna bet?(such as 1000):'.format(stake * rate)))
        rate = int(input("What multiplier do you want?你想翻几倍?(such as 2):"))
        small_compare = current_money < stake * rate
    return stake,rate

def roll_dice(times = 3):
    '''摇骰子'''
    print('<<<<<<<<<< Roll The Dice! >>>>>>>>>>')
    points_list = []
    while times > 0:
        number = random.randrange(1,7)
        points_list.append(number)
        times -= 1
    return points_list

def roll_result(total):
    '''判断是大是小'''
    is_big = 11 <= total <= 18
    is_small = 3 <= total <= 10
    if is_small:
        return 'Small'
    elif is_big:
        return 'Big'

def settlement(boo,points_list,current_money,stake = 1000,rate = 1):
    '''结余'''
    increase = stake * rate
    if boo:
        current_money += increase
        print('The points are ' + str(points_list) + ' .You win!')
        print('You gained $' + str(increase) + '.You have $' + str(current_money) + ' now.' )
    else:
        current_money -= increase
        print('The points are ' + str(points_list) + ' .You lose!')
        print('You lost $' + str(increase) + '.You have $' + str(current_money) + ' now.' )
    return current_money

def sleep_second(seconds=1):
    '''休眠'''
    time.sleep(seconds)


# 开始游戏
def start_game():
    '''开始猜大小的游戏'''
    current_money = 1000
    print('You have ${} now.'.format(current_money))
    sleep_second()
    while current_money > 0:
        print('<<<<<<<<<<<<<<<<<<<< Game Starts! >>>>>>>>>>>>>>>>>>>>')
        your_choice = input('Big or Small: ')
        choices = ['Big','Small']
        if your_choice in choices:
            stake,rate = enter_stake(current_money)
            points_list = roll_dice()
            total = sum(points_list)
            actual_result = roll_result(total)
            boo = your_choice == actual_result
            current_money = settlement(boo,points_list,current_money,stake,rate)
        else:
           print('Invalid input!')
    else:
        sleep_second()
        print('Game Over!')
        sleep_second(2)

if __name__ == '__main__':
    start_game()

其后命令行,切换成guess_exe.py的目录下,
输入:

pyinstaller --onefile --nowindowed --icon=" D:\Queena\PyCharmProjects\dist1\computer_three.ico" guess_exe.py

澳门葡京备用网址 3

澳门葡京备用网址 4

就会在如今文件下形成build文件夹、dist文件夹和.spec文件。
dist里就是guess_exe.exe可实施文件。

澳门葡京备用网址 5

假定有打包错误,具体看build里的warn***.txt文书档案,里面详细记叙了错误的缘由。壹般都以库丢失。
spec文件告诉PyInstaller怎么样去处理脚本。它对脚本名以及当先三分一pyinstaller的可选参数举办加密。PyInstaller正是通过奉行spec文件的始末来build
the app。

pip install pyinstaller

壹.4 pyinstaller 使用教程整理

  1. 一直在指令行用pip安装
    pyinstaller【第一回索要安装成功后,前面就不须要再设置了】

pip install pyinstaller

澳门葡京备用网址 6

  1. 在命令行中切换成要打包的次第所在目录,直接输入上面包车型地铁命令即可

pyinstaller learn01.py -F

澳门葡京备用网址 7

pyinstaller参数 含义
-F 指定打包后只生成一个exe格式的文件
-D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c –console, –nowindowed 使用控制台,无界面(默认)
-w –windowed, –noconsole 使用窗口,无控制台
-p 添加搜索路径,让其找到对应的库。
-i 改变生成程序的icon图标
-h pyinstaller各个参数的讲解

5. 插足麻瓜编制程序心得:

自己最大的感想是吸重力教程的美妙,它明显、简洁、易懂。
摄像学习进度中深切回味到了编写制定者的用功,精美的配图加上适当的背景音乐,基础知识和适度的小品种,那1各个的配套完结了麻瓜的博览群书。
打响的学会捌万数码的爬取之后,那种成就感几乎了啊哎,不能言喻。之后是数量的可视化还有种种图片以及呈现在网页上,那多种的到位都让小编很欣欣自得,而且那一个技艺让自个儿在工作技艺上有了异常的大的升级,以后跳槽笔者又有了开销,十分多谢麻瓜!

6. 参考网站:
http://pythonhosted.org/PyInstaller/
http://blog.csdn.net/zc02051126/article/details/8827868


想上手实战的小白看苏醒,那里有今日头条云课堂上最火热的 Python 课程:Python
实战:四周学会爬虫系统

:\>pip3 install pyinstaller 
  1. 更新或升级

一.5 关于 pyinstaller 使用计算

在用 pyinstaller
打包成exe后,点击运行,发现直接闪退,有点懵逼,估摸料定是协调的采用情势不对,后来也去google上寻觅了,发现也有人也在探寻pyinstaller
打包exe后闪退的连带难题,遵照教程尝试了一些篇,找了1些天一直从未优质的答案,发现依旧闪退。既然没找到答案,那么自个儿就去youtube上找个广播次数比较多的科目看看,看看别个怎么用法,最后大神的课程中找到了化解办法,在代码最前边丰盛相关代码就行,笔者收10了一下三种做法:

# 1.暂停的第一种方式
# time.sleep(10)

# 2.暂停的第二种方式
# input("Press <enter>")

# 3.暂停的第三种方式 (比较推荐这个)
# 提示使用之前,记得引入相关组件 import os
os.system("pause")

见状以上的做法,突然想起来了在c#中写调节台的现象,最后都会加一句一下代码(假诺不加,那就平昔退出调节台了,看不到运转后的调节台重临的参数:

Console.Read();

PyInstaller 的官方网站网站为
库会活动将 PyInstaller 命令安装到 Python 解释器目录中,与 pip 或 pip三命令路线一样,因而得以一向运用。使用PyInstaller 库十分简单易行,请小心,由于
PyInstaller 不扶助源文件命中有英文句号(.)存在,借使 dpython.py 文件在
D:\codes 目录中,命令如下:

一.6 相关参考教程

  1. 乐乎的入门教程
  2. 澳门葡京备用网址,awesome中国语言法学体系
  3. b站摄像教程一
  4. b站摄像教程贰
:\>pyinstaller dpython.py 
pip install --upgrade pyinstaller

  1. 下载文件安装进入setup.py所在门路,推行python setup.py install
    即可
:\>pyinstaller D:\codes\dpython.py 

用pyinstaller打包文件

实践已毕后,源文件所在目录将转移 dist 和 build 四个文件夹。当中,build
目录是 pyinstaller 存款和储蓄方今文件的目录,能够安全删除。最后的包装程序在
dist 内部的 dpython 目录中。目录中任何文件是可推行文件 dpython.exe
的动态链接库。能够透过-F 参数对 Python
源文件生成贰个独立的可实践文件,如下:

pyinstaller -F test.py
:\>pyinstaller -F dpython.py 

常用参数表明:

施行后在 dist 目录中冒出了 dpython.exe
文件,没有别的借助库,实践它就可以。使用 PyInstaller
库须要留意以下难点:文件路线中不能够出现空格和英文句号(.);源文件必须是
UTF-八 编码,暂不支持任何编码类型。选择 IDLE编写的源文件都保留为 UTF-八编码情势,可直接运用。PyInstaller 有局地常用参数,如下所示:

  • –icon=Logo路径
  • -F 打包成五个exe文件
  • -w 使用窗口,无调节台
  • -c 使用调节台,无窗口
  • -D 创设一个索引,里面包罗exe以及其余部分借助文件
  • pyinstaller -h 来查阅参数

-h, –help 查看支持
-v, –version

重返目的文件目录,发现该目录下生成了.spec文件test.spec,打包好的exe文件,在同目录的dist文件中,也能够因而pyinstaller
更换生成exe程序的Logo,pyinstaller -F –icon=my.ico test.py

查看 PyInstaller 版本

  • windows用户推行操作后频仍会发出程序闪退的动静,那是因为包装程序时相关库以及别的条件模块并不曾在联名打包,那里有二种缓解措施:

–clean 清理打包进度中的临时文件
-D, –onedir
默认值,生成 dist 目录
-F, –onefile
在 dist 文件夹中只生成单身的打包文件第
-p DI瑞虎, –paths DI奇骏 加多 Python 文件使用的第②方库路线
-i <.ico or .exe,ID or .icns>,–icon <.ico or .exe,ID or .icns
>内定打包程序行使的Logo(icon)文件

  1. 将exe拖到cmd中施行,终端里面就会有出口
  2. 在代码最终进入input操作,待用户输入后才会结束
  3. 原理和方面2个像样,那里可以更有益的应用python自带的msvcrt,他会活动获取用户的输入并回到,即高达了点击任意键停止,如下:

PyInstaller 命令不要求在 Python
源文件中加进代码,只需求经过命令行进行打包就能够。-F
参数最为常用,对于富含第一方库的源文件,能够选拔-p
增多第二方库所在路线。借使第1方库由 pip 安装且在Python
环境目录中,则不必要利用-p 参数。

你也许感兴趣的稿子:

  • 用PyInstaller把Python代码打包成单个独立的exe可实行文件
  • 行使PyInstaller将python转成可实施文件exe笔记
  • 因而Py二exe将协调的python程序打包成.exe/.app的主意
  • 利用python编写轻松的小程序编写翻译成exe跑在win10上
  • 解析Python中的eval()、exec()及其相关函数
  • python的exec、eval使用分析
  • python学习课程之使用py二exe打包
  • 详解python中executemany和体系的施用方法
  • Python之py2exe打包工具详解
  • 详解Python三.陆的py文件打包生成exe
import msvcrtprint(" ********** 按任意键结束 **********")msvcrt.getch()

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website