Nuitka 在 Linux 下将 Python 脚本转换为二进制

Nuitka 在 Linux 下将 Python 脚本转换为二进制

1. 安装 Nuitka

在 Linux 下,先确保 Python 和 Nuitka 已安装:

pip install nuitka

如果你的系统缺少 C 编译器(如 gcc),可以使用以下命令安装(以 Ubuntu 为例):

sudo apt update && sudo apt install -y gcc g++

2. 基本编译命令

将 Python 脚本转换为可执行文件的基本命令格式:

nuitka --follow-imports your_script.py

选项说明:

  • --follow-imports:自动跟踪并包含所有 Python 模块。
  • your_script.py:你的 Python 脚本文件。

3. 生成独立可执行文件(无需 Python 运行环境)

如果希望在目标系统上运行时不依赖 Python 解释器,使用 --standalone 选项:

nuitka --standalone --follow-imports your_script.py

此命令会生成一个独立的文件夹,其中包含:

  • 可执行文件 your_script.bin
  • 相关的 Python 运行库和 C 扩展文件

运行方式:

./your_script.bin

4. 生成单个二进制文件

如果希望打包成单个可执行文件,可以使用 --onefile 选项:

nuitka --standalone --onefile --follow-imports your_script.py

注意: --onefile 会将所有依赖压缩进一个二进制文件,但运行时需要先解压到临时目录,可能导致启动时间变长


5. 包含额外数据文件

如果你的程序依赖额外的文件(如 config.json),可以使用 --include-data-files 选项:

nuitka --standalone --include-data-files=config.json=./config.json --follow-imports your_script.py

6. 额外优化

6.1 去除调试信息,减少体积

strip your_script.bin

6.2 静态链接 Python 运行时

让 Python 运行时库静态链接,避免依赖:

nuitka --standalone --static-libpython=yes --follow-imports your_script.py

7. 常见问题

Q1: 为什么 --onefile 生成的文件较大?

因为 --onefile 会将所有 Python 运行时、依赖库等打包进可执行文件。如果想要更小的体积,可以使用 upx 进行压缩:

upx --best --lzma your_script.bin

Q2: 生成的文件无法运行,提示缺少共享库?

可以尝试运行:

ldd your_script.bin

如果有 not found 依赖项,需安装缺失的库。

Q3: 运行 --onefile 版本时,启动速度很慢?

--onefile 需要解压所有文件到 /tmp,可以使用 --onefile-tempdir-spec=/custom/path 来加速。


8. 总结

需求推荐命令
仅编译 Python 脚本nuitka --follow-imports your_script.py
生成独立运行的可执行文件nuitka --standalone --follow-imports your_script.py
生成单个可执行文件nuitka --standalone --onefile --follow-imports your_script.py
额外包含数据文件nuitka --standalone --include-data-files=config.json=./config.json --follow-imports your_script.py
静态链接 Python 运行时nuitka --standalone --static-libpython=yes --follow-imports your_script.py

这样,你就可以成功使用 Nuitka 将 Python 脚本转换为 Linux 上的二进制可执行文件了!🚀

No Comments

Send Comment Edit Comment


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
Previous
Next