当前位置:
首页 > Python基础教程 >
-
python工程编译成EXE
前言
python编译成EXE文件后,可以独立使用。亲测,一个复杂的python工程包含多个包多个模块,可以生成exe文件。
目的
windows下将整个python工程编译成单个EXE或者单个目录带EXE文件
工具
PyInstaller(windows,源代码python3.6)
步骤
-
-
项目根目录下新建frozen_dir.py
-
冻结路径(防止编译成exe后相对路径找不到)
# -*- coding: utf-8 -*- import sys import os # 冻结路径,所有路径以此为基准,打包后才能使用 def app_path(): """Returns the base application path.""" if hasattr(sys, 'frozen'): # Handles PyInstaller return os.path.dirname(sys.executable).replace("\\", "/") return os.path.dirname(__file__).replace("\\", "/")
-
冻结路径(防止编译成exe后相对路径找不到)
-
路径引用
-
import frozen_dir root_path = frozen_dir.app_path() path = os.path.join(root_path, default_path)
-
-
根目录下新建入口文件main.py
-
from test import main if __name__ == '__main__': main()
-
-
根目录下新建编译文件build.py
-
# -*- coding: utf-8 -*- import PyInstaller.__main__ import frozen_dir SETUP_PATH = frozen_dir.app_path() def build(): PyInstaller.__main__.run([ '--name=%s' % "main", # 生成的exe文件名 ['--onedir', '--onefile'][0], # 单个目录 or 单个文件 '--noconfirm', # Replace output directory without asking for confimation ['--windowed', '--console'][1], '--add-binary=./python3.dll;.', # 外部的包引入 '--add-binary=%s' % SETUP_PATH + '/config/logging.yaml;config', # 配置项 '--add-data=%s' % SETUP_PATH + '/config/config.ini;config', # 分号隔开,前面是添加路径,后面是添加到哪个目录 '--hidden-import=%s' % 'sqlalchemy.ext.baked', '--hidden-import=%s' % 'frozen_dir', # 手动添加包,用于处理 module not found 'main.py', # 入口文件 ]) if __name__ == '__main__': build()
-
-
运行build文件,根目录下dist/main/main.exe 为可执行文件,双击可运行。运行闪退的话,可以cmd进入到相关路径运行main.exe,缺失的包在build.py文件中添加hidden-imports项。
-
项目根目录下新建frozen_dir.py
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式