[272]如何把Python脚本导出为exe程序[通俗易懂]

一.pyinstaller简介pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行最新版是pyinstaller3.1.1。支持python2.7和python3.3+。可运行在Windows,Mac和Linux操作系统下。但它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Lin…

大家好,又见面了,我是你们的朋友全栈君。

一.pyinstaller简介

pyinstaller将Python脚本打包成可执行程序,使在没有Python环境的机器上运行

最新版是pyinstaller 3.1.1。支持python2.7和python3.3+。 可运行在Windows,Mac和Linux操作系统下。 但它不是跨编译的,也就是说在Windows下用PyInstaller生成的exe只能运行在Windows下,在Linux下生成的只能运行在Linux下。

二.pyinstaller在windows下的安装

使用命令pip install pyinstaller即可 在windows下,pyinstaller需要PyWin32的支持。当用pip安装pyinstaller时未找到PyWin32,会自动安装pypiwin32

[272]如何把Python脚本导出为exe程序[通俗易懂]

[272]如何把Python脚本导出为exe程序[通俗易懂]

出现Successfully installed pyinstaller-3.1.1 pypiwin32-219即表示安装成功

三.打包

打包的app里并不包含任何源码,但将脚本的.pyc文件打包了。

基本语法: pyinstaller options myscript.py

常用的可选参数如下:
–onefile 将结果打包成一个可执行文件
–onedir 将所有结果打包到一个文件夹中,该文件夹包括一个可执行文件和可执行文件执行时需要的依赖文件(默认)
–paths=DIR 设置导入路径
–distpath=DIR 设置将打包的结果文件放置的路径
–specpath=DIR 设置将spec文件放置的路径
–windowed 使用windows子系统执行,不会打开命令行(只对windows有效)
–nowindowed 使用控制台子系统执行(默认)(只对windows有效)
–icon=<FILE.ICO> 将file.ico添加为可执行文件的资源(只对windows有效)

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

四.小实例(windows下)

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

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

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

就会在当前文件下形成build文件夹、dist文件夹和.spec文件。 dist里就是guess_exe.exe可执行文件。

[272]如何把Python脚本导出为exe程序[通俗易懂]

附加

1、定位到pyinstaller.exe所在文件夹(一般再python下的“scripts”文件夹下)
(温馨提示:再cmd下tab键又补全功能哦)

2、再添加上你要转换的文件地址(两者之间有空格)

pyinstaller.exe后面如果加上-F就是打包为一个exe文件(文件会比较大),如果不加就会有很多库文件;加上-w就是打包为没有cmd窗口的exe,不加运行时就会出现cmd窗口。(加不加凭个人喜好)
[272]如何把Python脚本导出为exe程序[通俗易懂]

  1. 加-F的效果

image.png

  1. 不加-F
    image.png

  2. 不加-w的效果
    (加-w的话,就没有后面的那个黑框了
    [272]如何把Python脚本导出为exe程序[通俗易懂]

6、-F指令

注意指令区分大小写。这里是大写。使用-F指令可以把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹
[272]如何把Python脚本导出为exe程序[通俗易懂]

7、-p指令

这个指令后面可以增加pyinstaller搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径。不过经过笔者测试,site-packages目录下都是可以被识别的,不需要再手动添加
[272]如何把Python脚本导出为exe程序[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126254.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • centos7配置本地yum源_centos 本地yum源配置

    centos7配置本地yum源_centos 本地yum源配置centos7配置本地yum源环境限制外网怎么办?离线环境怎么解决依赖?yum源配起来,可以解决大部分包的安装^_^准备工作虚拟机版本——VMwareWorkstationPro12.x系统版本——CentOS-7-x86_64-DVD-1511.iso系统安装完毕,正常登录一、挂载镜像1.虚拟机方式1)操作之

  • LSTM模型结构讲解[通俗易懂]

    LSTM模型结构讲解[通俗易懂]人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。传统的神经网络并不能做到这点,看起来也像是一种巨大的弊端。例如,假设你希望对电影中的每个时间点的时间类型进行分类。传统的神经网络应该很难来处理这个问题——使用电影中先前的事件推…

  • mysql磁盘阵列部署_部署磁盘阵列

    mysql磁盘阵列部署_部署磁盘阵列1、mdadm命令用于管理Linux系统中的软件RAID硬盘阵列,格式为mdadm[模式][选项][成员设备名称]常用命令:mdadm-D/dev/md0#md0为自定义设备名,查看详细信息2、mdadm命令的常用参数和作用-a  检测设备名称-n  指定设备数量-l  指定RAID级别-C  创建(阵列卡)-v  显示过程-f   模拟设备损坏-r   …

  • 知识图谱入门 【七】- 知识推理

    知识图谱入门 【七】- 知识推理知识推理任务分类所谓推理就是通过各种方法获取新的知识或者结论,这些知识和结论满足语义。其具体任务可分为可满足性(satisfiability)、分类(classification)、实例化(materialization)。可满足性可体现在本体上或概念上,在本体上即本体可满足性是检查一个本体是否可满足,即检查该本体是否有模型。如果本体不满足,说明存在不一致。概念可满足性即检查某一概念的可满足性,即检查是否具有模型,使得针对该概念的解释不是空集。上图是两个不可满足的例子,第一个本体那个是…

  • centos nginx安装配置_centos7服务器

    centos nginx安装配置_centos7服务器安装编译工具及库文件关闭防火墙确认防火墙状态关闭selinux确认selinux状态创建目录文件夹确认目录情况配置nginx的yum源安装nginx安装成功,查看版本参考:http

  • linux练习题

    观察系统当前进程的运行情况的命令是():A、freeB、dmesgC、topD、last答案:http://hovertree.com/tiku/bjag/foxg5n0q.htmLinux系统

    2021年12月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号