Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 cx_Freeze 编译 Python script 成可执行档(.EXE)

使用 cx_Freeze 编译 Python script 成可执行档(.EXE)

作者头像
用户7886150
修改于 2021-01-04 02:05:24
修改于 2021-01-04 02:05:24
1.1K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: 在Python中使用CX_Freeze

早先都使用 pyinstaller 进行 Python Script 打包成单一 Exe,但最近不得不放弃使用, 其原因在于编译后的档案几乎 100% 的机会会被 Windows 上的防毒软体判定为病毒, 有一说是因为 pyinstaller 使用了其自备的 bootloader,故当执行编译后的 Python exe 档案 其行为将会被多数 Windows 上的防毒软体所阻挡并删除... 

原想放弃,但不打包 Python 将会遇到更多意想不到的问题,好在有一个替代方案并且经测试后确实比 pyinstaller 好用,但其编译后的 Python script 有较多档案并且你的 Python Module 也仅会被 编译为 .pyc 的档案。 

最终档案运作环境为 Windows,故使用 Windows 10 Pro 为编译时的平台,使用 Python 3.7.2 x64, 但会发生无法直接使用官方网站所说的 python -m pip install cx_Freeze --upgrade 指令安装, 但在 stackoverflow 的问题回答中改为使用 Python 3.6 x32 版本就可以顺利安装,我想又是跟系统位元数有关, 不过老子就是要用 x64,所以以下将改为使用 Wheel 的方式进行安装。 

安装环境: 1. Windows 10 Professional (Running on VMware) 2. Python 3.7.2 x64 3. cx_Freeze 5.1.1 4. Wheel 

安装方式: 1. 安装 Python 3.7.2 x64,并增加一个 PYTHONSTARTUP 变数,变数值为:<Python 的安装绝对路径> 至系统环境变数中,    这只是我遇到问题时发现有人新增了这个变数后让一些灵异问题减少,所以多设一次也没差就"射"吧! 

2. 开启命令提示字元(Command-Line)使用 pip 安装 Wheel    # pip install wheel 

3. 到以下网址下载相对应的 Wheel - cx_Freeze 档案,对应的档案名称为:    cx_Freeze‑5.1.1‑cp37‑cp37m‑win_amd64.whl    务必使用与自己 Python 版本相对应的 wheel 档    https://download.lfd.uci.edu/pythonlibs/r5uhg2lo/cx_Freeze-5.1.1-cp37-cp37m-win_amd64.whl 

4. 安装 cx_Freeze    # pip install cx_Freeze‑5.1.1‑cp37‑cp37m‑win_amd64.whl 

5. 就酱!这样就安装好所需要的环境了,接下来就是编译的方式说明,cx_Freeze 会帮你将所需要的 Module 都打包在一起,    所以若你没有遵守或了解 Python 的 Module 定义,那就发生一堆的 ModuleNotFoundException ...等问题,    所以建议要打包前,先确认你的 Python Module 都已经设定正确。        检查项目:    * 每个目录下是否都已经有空白的 __init__.py 告知 Python 使用该目录为 Package    * 各 *.py 的 import 语法是否正确? 

6. 接下来切换到你的 script 根目录,也就是 main 的那个 *.py 档所在 7. 执行 <Python 安装路径>\Script\cxfreezes-quickstart 让 cx_Freeze 帮你进行编译前的相关设定,这个动作会由 cx_Freeze    以交谈方式帮你建立编译用的 setup.py 档案,稍后在编译时将会使用到。    # python <Python 安装路径>\Script\cxfreezes-quickstart 

8. 接下来的问题,就一对一对答拉~    # Project Name:      <目前专案名称>    # Version[1.0]:      <目前专案版本>    # Description:       <目前专案描述>    # Python file to make executable from:       <目前专案版本>      -> 这个问题重要拉~请详细指明你主要启动的 *.py 档案名称,他会由此出发将所需要的 Module 一并编入,         也就是说,设定错误虽然可以编译完成,但是,连结 module 档案时都将会出错。 

   # Executable file name:      <最终可执行档案的名称>    # (C)onsole application, (G)UI application, or (S)ervice [C]:     <程式类型>      -> 建议依照你的 Python 专案类型而定义,应该是编译时会载入不同的 Python Library 

   # Save setup script to [setup.py]:       <是否储存编译专案用的设定档>    # Setup script written to setup.py; run it as:          python setup.py build      Run this now[n]?                       <设定档储存位置以及将会执行编译的指令> 

9. 按下 "Y" 后,cx_Freeze 就会开始编译档案,编译完成后即可以在同目录下的 build 资料夹找到编译后的相关档案。 10. 记得!要发布给他人使用时必须要把整个 build 目录内的档案一并交付,以免重要的档案遗失导致无法顺利运作。 

就酱!好好用吧

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用了那么久的ORM框架,你真的有了解HikariCP、Druid吗?
在高并发访问或长时间运行的应用中,MySQL数据库的连接资源耗尽会引发严重的线上问题。这类问题通常导致应用服务崩溃、请求阻塞、连接超时等一系列影响用户体验的现象。本文将深入探讨MySQL连接池资源耗尽的原因、如何进行性能测试对比HikariCP和Druid连接池的表现,以及高效的优化方案。
不惑
2025/01/03
8250
用了那么久的ORM框架,你真的有了解HikariCP、Druid吗?
HikariPool-1 - Connection is not available, request timed out after 30000ms
Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
程序员子龙
2024/01/05
2K0
【Java 进阶篇】JDBC 数据库连接池详解
数据库连接池是数据库连接的管理和复用工具,它可以有效地降低数据库连接和断开连接的开销,提高了数据库访问的性能和效率。在 Java 中,JDBC 数据库连接池是一个常见的实现方式,本文将详细介绍 JDBC 数据库连接池的使用和原理。
繁依Fanyi
2023/10/12
3.2K0
【Java 进阶篇】JDBC 数据库连接池详解
自定义HikariCP连接池
官方解释: 快速、简单、可靠。HikariCP 是一个“零开销”的生产就绪 JDBC 连接池。大约 130Kb,库非常轻。
ha_lydms
2023/08/10
2.3K0
自定义HikariCP连接池
性能测试中的数据库连接池优化
数据库连接池的意义是让连接复用,通过建立一个数据库连接池(缓冲区)以及一套连接的使用,分配,管理策略,使得该连接池中的连接可以得到高效,安全的复用,避免了数据库连接频繁的建立,关闭的开销。
漫谈测试
2025/02/05
2420
性能测试中的数据库连接池优化
HikariPool-1 – Connection is not available, request timed out after xxxxms.「建议收藏」
HikariPool-1 – Connection is not available, request timed out after xxxxms.
全栈程序员站长
2022/09/10
2.9K0
芋道 Spring Boot 数据库连接池入门
在我们的项目中,数据库连接池基本是必不可少的组件。在目前数据库连接池的选型中,主要是
芋道源码
2020/04/21
1.9K0
芋道 Spring Boot 数据库连接池入门
Spring整合Mybatis注解方式
纯注解方式 纯注解方式需要一个配置类来代替xml配置文件的作用,需在配置文件上注
全栈程序员站长
2022/08/14
3920
Java一分钟之-JDBC连接池:HikariCP, Apache DBCP, C3P0
在Java应用中,数据库访问是不可或缺的一部分,而频繁地创建和销毁数据库连接不仅耗时,还会对数据库服务器造成不必要的压力。JDBC连接池应运而生,它预先创建并维护一定数量的数据库连接,应用程序按需获取和释放,大大提高了效率和响应速度。本文将深入浅出地介绍三种常用的JDBC连接池——HikariCP、Apache DBCP、C3P0,并探讨它们的常见问题、易错点及避免策略。
Jimaks
2024/06/14
4130
干掉Druid,HakariCP 为什么这么快?
Springboot 2.0将 HikariCP 作为默认数据库连接池这一事件之后,HikariCP 作为一个后起之秀出现在大众的视野中。HikariCP 是在日本的程序员开源的,hikari日语意思为“光”,HikariCP 也以速度快的特点受到越来越多人的青睐。
码猿技术专栏
2024/01/29
3190
干掉Druid,HakariCP 为什么这么快?
java数据库连接池
Java数据库连接池是一种用于管理数据库连接的技术,它可以大大提高应用程序的性能和可扩展性。下面是一个简单的Java数据库连接池示例,以连接到MySQL数据库并执行查询。
堕落飞鸟
2023/04/03
1K0
数据库连接池:从JDBC到高效管理的演进
从最初的JDBC手动连接数据库,到后来的ORM框架如iBATIS,再到数据库连接池如C3P0,技术的进步和互联网的发展速度是非常惊人的。现在层出不穷的各种中间件和脚手架,都是为了提高开发效率,降低开发难度,让开发者能够更专注于业务逻辑的实现。
不惑
2024/05/07
4230
数据库连接池:从JDBC到高效管理的演进
SpringBoot 报 No operations allowed after connection closed 异常解决办法
  MySQL 5.0 以后针对超长时间数据库连接做了一个处理,即一个数据库连接在无任何操作情况下过了 8 个小时后(MySQL 服务器默认的超时时间是 8 小时),MySQL 会自动把这个连接关闭。在数据库连接池中的 connections 如果空闲超过 8 小时,MySQL 将其断开,而数据库连接池并不知道该 connection 已经失效,这个时候你请求数据库链接,连接池会将失效的 connection 给你,so~,SpringBoot 温柔的告诉你 No operations allowed after connection closed。SpringBoot 2.0 以上版本,mysql-connector-java 默认使用的是 8.0 以上版本。
Demo_Null
2020/09/28
16.4K0
使用数据连接池进行数据库操作
void disconnect(Connection conn)用于断开数据库连接
顾翔
2025/06/06
1500
使用数据连接池进行数据库操作
数据库链接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
鱼找水需要时间
2023/03/15
2.4K0
数据库链接池
【Java 进阶篇】JDBC DriverManager 详解
JDBC(Java Database Connectivity)是 Java 标准库中用于与数据库进行交互的 API。它允许 Java 应用程序连接到各种不同的数据库管理系统(DBMS),执行 SQL 查询和更新操作,以及处理数据库事务。在 JDBC 中,DriverManager 是一个关键的类,用于管理数据库驱动程序和建立数据库连接。本文将详细介绍 JDBC DriverManager 的用法,面向基础小白,帮助您快速入门 JDBC 数据库连接。
繁依Fanyi
2023/10/12
9320
【Java 进阶篇】JDBC DriverManager 详解
Hikari链接池
Hikari是一款非常强大,高效,并且号称“史上最快连接池”。并且在springboot2.0之后,采用的默认数据库连接池就是Hikari。
用户10325771
2023/03/01
9320
RunnerGo API 性能测试实战:从问题到解决的全链路剖析
在现代软件开发领域,API(应用程序编程接口)作为不同软件系统之间通信的桥梁,其性能直接影响到整个应用的稳定性和用户体验。今天,我将跟大家聊聊 API 性能测试的那些事儿,重点分享如何借助 RunnerGo 全栈测试平台高效开展 API 性能测试工作,并通过实际案例深入剖析相关细节。
用户11531559
2025/04/29
1430
jdbc是数据库连接池么_零之轨迹超详细攻略
1、数据库连接池的基本思想: 就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
全栈程序员站长
2022/09/30
5550
jdbc是数据库连接池么_零之轨迹超详细攻略
hikaripool连接保持,HikariPool-1 – 连接不可用,请求超时后[通俗易懂]
I’m using HikariCP 2.4.7 for connection pool. Everything is fine just after starting the application but after some time without invoking getConnection() I get this error when I’m trying to getConnection():
全栈程序员站长
2022/09/10
3.6K0
推荐阅读
相关推荐
用了那么久的ORM框架,你真的有了解HikariCP、Druid吗?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档