18.3.25补:现在的python3.6好像已经有对应的pyinstaller版本了,下面的内容也没什么用处了….留下这篇为以后的版本不兼容留下点经验

一、pyinstaller的安装

直接用pip安装是用不了的,会报错,因为还没有适合python3.6的pyinstaller库。
故而,需要直接从github上下载pyinstaller文件——pyinstaller
这里写图片描述
点击红色圈里的选项下载压缩包,解压后得到pyinstaller文件。

二、使用pyinstaller

在网上看了很多博客,最后只能用下面这种无奈的方法转换成exe文件。

<1>打开pyinstaller文件,进入含有pyinstaller.py的目录(开始文件的开始目录)。
打开cmd(Ctrl + R),用cd命令进入到这个目录,如我的目录:
D:\文档堆\码源世界\Python\Python代码\Python生成exe\pyinstaller
则命令如图
这里写图片描述
最后一行的D:\文档堆\码源世界\Python\Python代码\Python生成exe\pyinstaller>表示已经进入到该目录环境下了。

<2>接着把你要转换的.py文件放入该目录下,用hello.py展示。
代码如下:

# hello.py
import time

print('hello, python!')
time.sleep(10)

然后执行命令:

python pyinstaller.py -F hello.py

这里写图片描述
然后能在该目录下找到生成的hello文件。
这里写图片描述
exe可执行文件在hello里的dist目录下。

三、编自动代码

用pyinstaller转换exe时,需要把文件放入该目录下,感觉这样不妥,于是了解了pyinstaller一些转换命令后,编写了一个简单的转换代码。

简介

启用pyinstaller转换命令不止上述的python pyinstaller.py -F ....
pyinstaller命令的语法是:

python pyinstaller.py [选项] [文件名.py]
在此简单的说一下

选项说明
-F –onefile创建一个文件捆绑的可执行文件。
–distpath DIR在哪里放置捆绑的应用程序(默认:./dist)
–workpath WORKPATH在哪里放置所有的临时工作文件,.log,.pyz等(默认:./build)
–specpath DIR存储生成的spec文件的文件夹(默认:当前目录)

把桌面上的hello.py转换的文件放置在桌面上hello文件中的命令:

python pyinstaller.py -F –distpath C:\Users\Heart\Desktop\hello\dist –workpath C:\Users\Heart\Desktop\hello\build –specpath C:\Users\Heart\Desktop\hello C:\Users\Heart\Desktop\hello.py

命令很长,每次这样输入让人很不爽,于是写个自动转换的代码偷个懒,而且还可以随时改动,很方便。

代码设计

其他选项见英语文章使用PyInstaller不会英语的可以安装个浏览器翻译插件。谷歌浏览器自带有。
博主是如此设计的

这里写图片描述
input文件 放要转换的.py文件;
output文件用于安置转换好的文件;
exe.py为自己编写的自动转换程序。
代码如下:

import os

# 获取需要转换的.py格式文件位置
pyname = os.listdir('D:/文档堆/码源世界/Python/Python代码/Python生成exe/input')[0]
py_path = 'D:/文档堆/码源世界/Python/Python代码/Python生成exe/input/' + pyname

# 转换后文件的放置目录
filename = 'D:/文档堆/码源世界/Python/Python代码/Python生成exe/output/' + pyname.split('.')[0] + '/'

# 指定三个选项的文件路径
dist_path = filename + 'dist'
build_path = filename + 'build'
spec_path = filename

# 指定pyinstaller.py位置
pyinstaller_path = r'D:\文档堆\码源世界\Python\Python代码\Python生成exe\pyinstaller\pyinstaller.py'

# 选项
options = ' -F' + ' --distpath ' + dist_path + ' --workpath ' + build_path + ' --specpath ' + spec_path + ' '
# 调用系统命令
os.system('python ' + pyinstaller_path + options + py_path)

代码里的目录位置需要自己去修改,这些位置都是博主的存放位置。

该代码缺陷是还是限制于input与output文件位置,目录都是定下来了,但优点是简单,傻瓜式的操作,点击即用。

下面给出一下比较灵活的转换代码:

import os

# 获取需要转换的.py格式文件位置
py_path = input('请输入.py格式的文件位置:\n')

# 转换后文件的放置目录
file_path = py_path.split('.')[0] + '\\'

# 指定三个选项的文件路径
dist_path = file_path + 'dist'
build_path = file_path + 'build'
spec_path = file_path

# 指定pyinstaller.py位置,这个需要自己修改
pyinstaller_path = r'D:\文档堆\码源世界\Python\Python代码\Python生成exe\pyinstaller\pyinstaller.py'

# 选项
options = ' -F' + ' --distpath ' + dist_path + ' --workpath ' + build_path + ' --specpath ' + spec_path + ' '
# 调用系统命令
os.system('python ' + pyinstaller_path + options + py_path)

该代码需要读者自行修改pyinstaller目录位置即可使用。

输入.py格式的文件,则在当前目录下就能生成转换文件。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐