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之模拟鼠标键盘动作具体实现
Dec 30 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
Python创建对称矩阵的方法示例【基于numpy模块】
Oct 12 Python
Python解决八皇后问题示例
Apr 22 Python
Python操作mongodb的9个步骤
Jun 04 Python
Python pygorithm模块用法示例【常见算法测试】
Aug 16 Python
python3 拼接字符串的7种方法
Sep 12 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
Python的高阶函数用法实例分析
Apr 11 Python
pandas分区间,算频率的实例
Jul 04 Python
Django 大文件下载实现过程解析
Aug 01 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
May 10 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类
2006/11/27 PHP
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
PHP7.0版本备注
2015/07/23 PHP
PHP实现的日历功能示例
2018/09/01 PHP
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
vue vuex vue-rouert后台项目——权限路由(适合初学)
2017/12/29 Javascript
解决Vue打包之后文件路径出错的问题
2018/03/06 Javascript
微信小程序带动画弹窗组件使用方法详解
2018/11/27 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
9种方法优化jQuery代码详解
2020/02/04 jQuery
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
Python的Bottle框架的一些使用技巧介绍
2015/04/08 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python定位xpath 节点位置的方法
2019/08/27 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
学python爬虫能做什么
2020/07/29 Python
Python类成员继承重写的实现
2020/09/16 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
美国社交购物市场:MassGenie
2019/02/18 全球购物
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
车辆转让协议书
2014/04/15 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
计算机网络专业自荐书
2014/06/09 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
九九重阳节标语
2014/10/07 职场文书
自荐信怎么写
2015/03/04 职场文书
小学教师教育随笔
2015/08/14 职场文书
教师读书活动心得体会
2016/01/14 职场文书