You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nuitka编译.py为.exe时遭遇fatal error C1060的解决方法

解决Nuitka编译时fatal error C1060(系统内存不足)的方案

问题背景

用Nuitka编译含yt-dlp和PyQt5的Python脚本为单文件EXE时,MSVC编译器触发fatal error C1060: 系统内存不足,报错集中在yt-dlp的大型提取器模块(如youtube.cpp、lazy_extractors.cpp)。

编译命令:

nuitka --onefile --jobs=4 --disable-ccache --plugin-enable=pyqt5 --windows-icon-from-ico=youtube-downloader-icon.ico downloader.py

核心报错片段:

module.yt_dlp.extractor.youtube.cpp(127845): 致命错误 C1060: 系统内存不足
module.yt_dlp.extractor.lazy_extractors.cpp(469234): 致命错误 C1060: 系统内存不足

可行解决办法

1. 降低并发编译任务数

当前--jobs=4开启4个并行编译任务,每个yt-dlp大模块编译都会占用大量内存,并行运行直接耗尽系统内存。

  • 修改命令,缩小jobs值,比如改为1或2:
nuitka --onefile --jobs=1 --disable-ccache --plugin-enable=pyqt5 --windows-icon-from-ico=youtube-downloader-icon.ico downloader.py

2. 剔除yt-dlp冗余提取器

yt-dlp的lazy_extractors包含数百个网站的提取器,多数对YouTube下载器无用,可通过代码只保留需要的提取器:

  • 在脚本开头添加以下代码:
import yt_dlp
# 仅保留YouTube提取器
yt_dlp.extractor.gen_extractors = lambda: [yt_dlp.extractor.get_extractor('Youtube')()]

这样编译时只会处理YouTube相关模块,生成的C++文件体积骤减,内存占用大幅降低。

3. 升级Nuitka版本

当前使用的Nuitka 1.5.4对Python 3.11仅为实验性支持,新版本针对大模块编译和内存优化有改进:

  • 执行命令升级:
pip uninstall nuitka -y
pip install nuitka --upgrade

4. 释放系统内存

  • 关闭浏览器、IDE、虚拟机等占用内存的程序,把内存留给编译器。
  • 物理内存不足时,可临时增大Windows虚拟内存(路径:控制面板→系统→高级系统设置→性能→设置→高级→虚拟内存→更改)。

5. 切换到MinGW编译器

MSVC编译大文件时内存占用比MinGW更高,可尝试更换编译器:

  • 先安装MinGW-w64,再用以下命令编译:
nuitka --onefile --jobs=2 --disable-ccache --plugin-enable=pyqt5 --windows-icon-from-ico=youtube-downloader-icon.ico --mingw64 downloader.py

内容的提问来源于stack exchange,提问作者notseriouss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:44:56