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备份Mysql脚本
Aug 11 Python
Python 的 with 语句详解
Jun 13 Python
Python中的类学习笔记
Sep 23 Python
python格式化字符串实例总结
Sep 28 Python
Python设置Socket代理及实现远程摄像头控制的例子
Nov 13 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
python定时关机小脚本
Jun 20 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
Python中关于浮点数的冷知识
Sep 22 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
wxPython实现文本框基础组件
Nov 18 Python
python判断是空的实例分享
Jul 06 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 addslashes 函数详细分析说明
2009/06/23 PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
Jquery实现兼容各大浏览器的Enter回车切换输入焦点的方法
2014/09/01 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
vue移动端屏幕适配详解
2019/04/30 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
Python3 集合set入门基础
2020/02/10 Python
windows下python安装pip方法详解
2020/02/10 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
HTML5到底会有什么发展?HTML5的前景展望
2015/07/07 HTML / CSS
志愿者爱心公益活动策划方案
2014/09/15 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
政风行风建设整改方案
2014/10/27 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
Nginx速查手册及常见问题
2022/04/07 Servers