Python 把脚本编译打包成EXE文件 —— pyinstaller 的安装和使用

简介: Python 把脚本编译打包成EXE文件 —— pyinstaller 的安装和使用

安装 pyinstaller


要把Python脚本编译打包成.exe可执行文件,需要安装 pyinstaller.exe 。


打开windows控制台窗口cmd.exe,执行以下命令,Python会自动网络下载并安装。


   Microsoft Windows [版本 6.1.7601]

   版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

   C:\Users\Administrator>cd C:\Program Files\Python37

   C:\Program Files\Python37>python -m pip install pyinstaller

   ......略去N行......

 

Successfully installed altgraph-0.17 future-0.18.2 importlib-metadata-3.7.3 pefi
    le-2019.4.18 pyinstaller-4.2 pyinstaller-hooks-contrib-2021.1 pywin32-ctypes-0.2
    .0 typing-extensions-3.7.4.3 zipp-3.4.1


安装完成后,pyinstaller.exe在scripts目录下:


 

C:\Program Files\Python37>scripts\pyinstaller
    usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]
                       [--add-data <SRC;DEST or SRC:DEST>]
                       [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]
                       [--hidden-import MODULENAME]
                       [--additional-hooks-dir HOOKSPATH]
                       [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]
                       [--key KEY] [-d {all,imports,bootloader,noarchive}] [-s]
                       [--noupx] [--upx-exclude FILE] [-c] [-w]
                       [-i <FILE.ico or FILE.exe,ID or FILE.icns or "NONE">]
                       [--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]
                       [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]
                       [--win-no-prefer-redirects]
                       [--osx-bundle-identifier BUNDLE_IDENTIFIER]
                       [--runtime-tmpdir PATH] [--bootloader-ignore-signals]
                       [--distpath DIR] [--workpath WORKPATH] [-y]
                       [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]
                       scriptname [scriptname ...]
    pyinstaller: error: the following arguments are required: scriptname




编译Python脚本


pyinstaller -F exam.py



生成的exam.exe在dist目录下,用Python官网首页的第一个示例来测试下:

# Python 3: Fibonacci series up to n
def fib(n):
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()
fib(1000)
'''
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
'''


编译过程会在源码目录下生成一个目录__pycache__,exam.exe在dist子目录下,文件大小5.6M,运行结果:


   C:\Program Files\Python37\Scripts\dist>exam

   0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987


编译时不带参数 -F ,将在 dist 目录下生成一个同名子目录,exam.exe在其中,还有很多其它文件,最主要的是 base_library.zip 和 python37.dll , 版本不同数字37也不同。


如用 tkinter 库生成一个简单的GUI窗口程序,文件更大,8.4M,源码及运行结果如下:

import tkinter
win = tkinter.Tk()
win.title('myWin')
win.geometry("640x480")
win.mainloop()

20210317122929242.png


程序会带有一个控制台的黑窗口,编译时多用一个参数  -w 或 --noconsole 即可去掉。

1. pyinstaller -F -w exam.py
2. 或者:
3. pyinstaller -F exam.py --noconsole



生成的可执行文件有点大,参数 [--upx-dir UPX_DIR]  和 [--clean] 可用于压缩和清理。具体用法见:

https://blog.csdn.net/xinyingzai/article/details/80282856


Pyinstaller 打包发布经验总结:

https://blog.csdn.net/weixin_42052836/article/details/82315118



另外一个.py转.exe的工具: PY2EXE


py2exe is a Python Distutils extension which converts Python scripts into executable Windows programs, able to run without requiring a Python installation.


官方网站:

http://www.py2exe.org/


下载地址:

https://pypi.org/project/py2exe/

py2exe仅适用于Windows平台。


附:upgrade pip


You are using pip version 10.0.1, however version 21.0.1 is available.

You should consider upgrading via the 'python -m pip install --upgrade pip' command.

C:\Program Files\Python37>python -m pip install --upgrade pip

Collecting pip

 Downloading https://files.pythonhosted.org/packages/fe/ef/60d7ba03b5c442309ef4

2e7d69959f73aacccd0d86008362a681c4698e83/pip-21.0.1-py3-none-any.whl (1.5MB)

   37% |████████████▏                   | 583kB 37kB/s eta 0:00:26

   38% |████████████▍                   | 593kB 37kB/s eta 0:00:26

   39% |████████████▋                   | 604kB 32kB/s eta 0:00:29

   39% |████████████▊                   | 614kB 22kB/s eta 0:00:41

   。。。省去N行。。。

 

   97% |███████████████████████████████▎| 1.5MB

   98% |███████████████████████████████▌| 1.5MB

   99% |███████████████████████████████▊| 1.5MB

   99% |████████████████████████████████| 1.5MB

   100% |████████████████████████████████| 1.5M

B 18kB/s

Installing collected packages: pip

 Found existing installation: pip 10.0.1

   Uninstalling pip-10.0.1:

     Successfully uninstalled pip-10.0.1

Successfully installed pip-21.0.1

C:\Program Files\Python37>



目录
相关文章
|
20天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
1月前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
58 20
|
1月前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
61 14
|
1月前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
1月前
|
存储 JSON 对象存储
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
2月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
128 80

热门文章

最新文章