Nuitka简介
编译成C++的Python打包工具
核心原理与优势
Nuitka的核心原理是将Python代码直接编译成C++代码,然后再生成可执行文件。这种方法带来了以下显著优势:
- 运行更快:直接编译成机器码,运行速度大幅提升。
- 体积更小:无需携带Python解释器,生成的exe文件体积更小。
- 保护代码:反编译难度大,有效保护源代码。
- 兼容性好:支持所有Python特性,包括第三方库。
安装Nuitka与编译工具
安装Nuitka
安装Nuitka非常简单,只需运行以下命令:
pip install nuitka安装编译工具(Windows用户)
Windows用户需要安装Visual Studio Build Tools:
1. 访问微软官网下载 “Visual Studio Build Tools” 。
2. 安装时选择“使用C++的桌面开发”。
3. 完成安装后即可使用。
快速入门:打包你的第一个Python脚本
示例代码
创建一个名为hello.py的Python脚本:
def greet(name):
return f"你好, {name}!"
if __name__ == "__main__":
print(greet("小明"))打包命令
在命令行中运行以下命令:
python -m nuitka --standalone --windows-disable-console hello.py打包完成后,你将在当前目录下看到一个hello.dist文件夹,里面包含了可以直接运行的exe文件。
GUI程序打包实战
示例代码
创建一个简单的GUI程序gui_app.py:
import tkinter as tk
from tkinter import messagebox
class SimpleApp:
def __init__(self, root):
self.root = root
root.title("我的第一个GUI程序")
self.label = tk.Label(root, text="请输入你的名字:")
self.label.pack(pady=10)
self.entry = tk.Entry(root)
self.entry.pack(pady=5)
self.button = tk.Button(root, text="点击问好", command=self.say_hello)
self.button.pack(pady=10)
def say_hello(self):
name = self.entry.get()
if name:
messagebox.showinfo("问候", f"你好,{name}!\n欢迎来到Python世界!")
else:
messagebox.showwarning("提示", "请输入名字哦!")
if __name__ == "__main__":
root = tk.Tk()
app = SimpleApp(root)
root.mainloop()打包命令
运行以下命令进行打包:
python -m nuitka --standalone --windows-disable-console --enable-plugin=tk-inter gui_app.py多文件项目打包
项目结构
假设你的项目结构如下:
my_project/
│
├── main.py # 主程序入口
├── config/ # 配置模块
│ ├── __init__.py
│ └── settings.py
├── utils/ # 工具模块
│ ├── __init__.py
│ ├── helper.py
│ └── tools.py
└── resources/ # 资源文件
├── images/
│ └── icon.ico
└── data/
└── config.json示例代码
main.py示例:
from config.settings import APP_NAME
from utils.helper import get_user_data
import json
import os
def main():
print(f"欢迎使用 {APP_NAME}")
user_data = get_user_data()
# 读取配置文件
config_path = os.path.join("resources", "data", "config.json")
with open(config_path, "r", encoding="utf-8") as f:
config = json.load(f)
print("程序正在运行...")
if __name__ == "__main__":
main()打包命令
运行以下命令进行打包:
python -m nuitka ^
--standalone ^
--windows-disable-console ^
--include-package=config ^
--include-package=utils ^
--include-data-dir=resources=resources ^
--windows-icon-from-ico=resources/images/icon.ico ^
--output-dir=build ^
main.py实用技巧:常用命令参数与优化
常用命令参数
- –standalone:生成独立程序。
- –windows-disable-console:不显示控制台。
- –output-dir=xxx:指定输出目录。
- –include-package=xxx:包含指定模块。
- –include-data-dir=xxx:包含资源文件夹。
- –windows-icon-from-ico=xxx:指定程序图标。
- –show-progress:显示编译进度。
- –follow-imports:自动包含导入的模块。
减小文件体积
- 使用–remove-output删除临时文件。
- 用–nofollow-import-to排除不需要的模块。
- 添加–python-flag=no_site不包含site-packages。
转载作品,原作者:一点it,文章来源:https://www.toutiao.com/article/7559059224114889257
微信赞赏
支付宝赞赏 