Python脚本导出为exe程序的方法


Posted in Python onMarch 25, 2020

一.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

Python脚本导出为exe程序的方法

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,代码如下:

__author__ = 'zhou'
# -*- 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

Python脚本导出为exe程序的方法
Python脚本导出为exe程序的方法

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

[外链图片转存失败(img-NSV511rc-1562767762570)(https://upload-images.jianshu.io/upload_images/6152595-56dc5aad9152513e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

1、安装pyinstaller(需要先安装pip)、再:pip install pyinstaller

(由于我事先安装了pyinstaller,为了方便就卸载了,不知道影不影响显示。但安装成功后会有“Successfully installed pyinstaller”的提示)

Python脚本导出为exe程序的方法

2、定位到pyinstaller.exe所在文件夹(一般再python下的“scripts”文件夹下)

(温馨提示:再cmd下tab键又补全功能哦)

Python脚本导出为exe程序的方法

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

pyinstaller.exe后面如果加上-F就是打包为一个exe文件(文件会比较大),如果不加就会有很多库文件;加上-w就是打包为没有cmd窗口的exe,不加运行时就会出现cmd窗口。(加不加凭个人喜好)

Python脚本导出为exe程序的方法

4. 加-F的效果

Python脚本导出为exe程序的方法

不加-F

Python脚本导出为exe程序的方法

不加-w的效果

(加-w的话,就没有后面的那个黑框了

Python脚本导出为exe程序的方法

1、-F指令

注意指令区分大小写。这里是大写。使用-F指令可以把应用打包成一个独立的exe文件,否则是一个带各种dll和依赖文件的文件夹

Python脚本导出为exe程序的方法

2、-p指令

这个指令后面可以增加pyinstaller搜索模块的路径。因为应用打包涉及的模块很多。这里可以自己添加路径。不过经过笔者测试,site-packages目录下都是可以被识别的,不需要再手动添加

Python脚本导出为exe程序的方法

补充:如何将python的.py文件转换为可执行的.exe文件。

首先,我写了一个print(“hello,world”).py文件。命名为hello.py保存在我的电脑C盘的C:\Users\ly目录下如图所示。

ps:尽量选择在这个文件夹下,如果选择其他盘的文件夹下,生成的.exe的dist文件夹也会出现在这个c盘的路径下,而且如果保存在其他盘下有时候还会出错,不好用。

Python脚本导出为exe程序的方法              Python脚本导出为exe程序的方法

 

利用pip安装python的工具库pyinstaller。

pip install pyinstaller

安装成功后

在命令窗口输入:pyinstaller -F C:\Users\ly\hello.py

注意 F 一定要大写

然后就会在这个路径下的dist文件夹下找到这和同名的hello.exe文件。

Python脚本导出为exe程序的方法

总结

到此这篇关于Python脚本导出为exe程序的方法的文章就介绍到这了,更多相关Python导出exe程序内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
推荐下python/ironpython:从入门到精通
Oct 02 Python
进一步探究Python的装饰器的运用
May 05 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
Jan 16 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
Python多线程原理与用法详解
Aug 20 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
python 的 scapy库,实现网卡收发包的例子
Jul 23 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
python取均匀不重复的随机数方式
Nov 27 Python
Python 实现一行输入多个数字(用空格隔开)
Apr 29 Python
python 利用zmail库发送邮件
Sep 11 Python
Python实现猜年龄游戏代码实例
Mar 25 #Python
python读取mysql数据绘制条形图
Mar 25 #Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 #Python
python画环形图的方法
Mar 25 #Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 #Python
Python语法垃圾回收机制原理解析
Mar 25 #Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 #Python
You might like
PHP insert语法详解
2008/06/07 PHP
PHP常用函数小技巧
2008/09/11 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
2012/08/22 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
基于jquery css3实现点击动画弹出表单源码特效
2015/08/31 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
小程序实现左滑删除功能
2018/10/30 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
处理Python中的URLError异常的方法
2015/04/30 Python
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
简单实现python画圆功能
2018/01/25 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
2020/05/15 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
HTML5实现移动端复制功能
2018/04/19 HTML / CSS
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
装饰资料员岗位职责
2013/12/30 职场文书
两只小狮子教学反思
2014/02/05 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL