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简单计算文件夹大小的方法
Jul 14 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
Jun 13 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
在python中使用with打开多个文件的方法
Jan 07 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
使用python制作一个解压缩软件
Nov 13 Python
基于Python正确读取资源文件
Sep 14 Python
Python Tkinter实例——模拟掷骰子
Oct 24 Python
详解Python openpyxl库的基本应用
Feb 26 Python
python3实现无权最短路径的方法
May 12 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/10/09 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
Symfony2框架创建项目与模板设置实例详解
2016/03/17 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
六年级学生评语大全
2014/12/26 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
《哪吒之魔童降世》观后感:世上哪有随随便便的成功
2019/11/08 职场文书