目录
一、 Python 打包工具—Pyinstaller
PyInstaller 是一个可以将 Python 程序打包成一个独立可执行文件的软件包。它通过读取已经编写好的 Python 脚本,分析代码执行需要的模块和库,然后将其依赖库一同打包转成可以直接脱离于python环境下独立运行的程序,目前已经支持 在Windows、Linux 和 Mac OS 上运行。简单的理解就是,通过对程序脚本的打包(尤其是带有操作界面的程序),可以获得一个完整的软件。
下载命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
Pyinstaller的参数
其中 Pyinstaller 命令的参数,其中
-F
参数代表制作独立的可执行程序。-w
是指程序启动的时候不会打开命令行。如果不加-w
的参数,就会有黑洞洞的控制台窗口出来。此外,-w
参数在 GUI 界面时非常有用。-i
就是指设置自己的图标图案,因为默认打包图片如下图所示。这个参数也可以写成--icon=aiyc.ico
二、Python 打包可执行exe文件
方法一:python虚拟环境下+打包的全过程:
conda 虚拟环境下
#创建虚拟环境 conda create -n aotu python=3.6 #激活虚拟环境 conda activate aotu #Pyinstaller打包 Pyinstaller -F -w -i apple.ico py_word.py
(1)先根据现有的虚拟环境创建项目,
将代码复制进去,
第一种情况: python不带参数打包exe及调用方式
(2)修改代码运行结果的展现方式:
(3)打开终端,运行代码
(venv) PS D:\my\python-pycharm\zx> cd path_recommend
(venv) PS D:\my\python-pycharm\zx\path_recommend> pyinstaller -F -w get_shortest_distance.py
pyinstaller -F -w -i g:\2345Downloads\logo.ico login.py --hidden-import doTest.py --hidden-import itemContent --hidden-import queryDB.py --hidden-import view.py --hidden-import Applications.py --hidden-import mainWindow.py
解释:进入到cmd命令行中,然后cd到我们的项目代码所在的具体的目录,在项目代码所在的目录中,使用上述代码进行打包。
其中,
- -F :大写, 打包成一个exe文件;
- -w:小写,取消控制台显示;
- -i :小写,忽略打包过程中遇到的错误,就是遇到错误也继续执行;
从这个项目文件目录安排上可以看出,这里没有在项目里放置更多的文件夹,一些代码文件都是散放在主文件夹中,在 pyinstaller -F -w -i之后放的是我们需要最终显示的图标的绝对路径,之后的第一个Python文件就是这个项目的主文件,之后使用--hidden-import导入这个项目中的一些其他的Python文件。
下面是打包命令执行后程序打包的编译过程,具体如下:
最后会显示打包成功。
(3)执行完毕之后,会生成几个文件夹,如下图所示。
在dist里面就有了一个exe程序,这个就是可执行的exe程序,如下图所示。
从上图中,我们可以看到最后打包成功了,打包成功之后会在当前目录下生成两个文件夹,我们的EXE文件就在dist文件夹中。
已经生成了一个exe 应用程序,看来已经成功一半了。
(4)我们把这个get_shortest_distance.exe拖到和get_shortest_distance.py平级的目录,双击运行一下这个exe。
(5)双击生成的exe文件,就可以看到新生成的txt结果文件了。
欧克。
第二种情况: python带参数打包exe及调用方式
参考python带参数打包exe及调用方式_Python-考高分网
一般打包都是使用pyinstaller -F -w xxx.py,传入参数之后没有任何提示和print。可以使用sys进行传参。换成
pyinstaller -F xxx.py
即可。
(2) 修改代码运行结果的展现方式:
if __name__ == '__main__':
V = list([i for i in range(0, 315)])
E = main_distance('data/tw_315_with_dis.csv')
graph = {
'V': V,
'E': E
}
start_node = sys.argv[1]
end_node = sys.argv[2]
print("起点:", start_node, "终点:", end_node)
# start_node, end_node = 1, 60
path, sum_coss = get_shortest_distance(start_node, end_node, graph)
stri = "节点" + str(start_node) + "到节点" + str(end_node) + "的最短路径为:" + str(path) + "\n总距离为:" + str(sum_coss)
print(stri)
with open('result.txt', 'w', encoding='UTF-8') as file:
file.write(str(stri))
output = os.popen('get_shortest_distance.exe arg1 arg2').read()
(3)打开终端,运行命令,生成dist文件夹下的exe应用程序。
pyinstaller -F get_shortest_distance.py
把这个get_shortest_distance.exe拖到和get_shortest_distance.py平级的目录,
(4)在pycharm的终端输入运行exe命令,
(venv) PS D:\my\python-pycharm\zx\path_recommend> .\get_shortest_distance.exe 1 60
起点: 1 终点: 60
节点1到节点60的最短路径为:[1, 0, 8, 9, 12, 14, 16, 19, 297, 298, 299, 300, 302, 304, 305, 303, 301, 296, 18, 17, 15, 295, 293, 291, 288, 287, 285, 282, 281, 279, 306, 307, 308, 309, 311, 314, 13, 11, 10, 4 24, 30, 31, 32, 33, 35, 38, 39, 41, 42, 43, 45, 47, 48, 52, 55, 58, 53, 60]
同样,在cmd中输入命令也是一样的,
欧克。
三、ico 图片生成
自己做的软件都喜欢放上自己的图标,不过哪来那么多 ico 图片呢?一个是可以找专门的 ico 图片网站,不过都很小众,图片库也很小。另一个是可以自己生成,这里就给大家分享一个网站,可以把其他格式图片转成 ico 格式:在线图片转icon格式 – 图片转换成icon在线工具 – 迅捷PDF转换器在线免费版