PyInstaller 打包 Python 程序全攻略:从能跑到能交付的完整实践
简介这是一份PyInstaller早期版本安装包资源面向需要在无Python解释器的目标环境中分发应用的开发者特别适合刚接触打包流程的Python初学者。PyInstaller通过分析脚本依赖将程序封装为独立可执行文件支持Windows、Linux、macOS等多平台能有效解决跨机器运行问题是Python项目分发环节的常用工具。压缩包共含19个文件整体仅37KB结构清晰10个txt文件提供说明文档与测试文本5个py脚本包含核心实现和测试用例2个pkg-info记录包元数据cfg完成构建配置regen-docs脚本用于生成文档涵盖安装、配置、测试、文档四个维度便于快速了解工具全貌。已有587人学习下载资源虽小但信息密度高。阅读包内核心Python脚本与测试样例可理清打包入口、依赖处理逻辑以及常见排查思路是辅助理解PyInstaller工作原理的轻量参考适合本地实验与源码分析。1. pyinstall 打包到底解决了什么从“能跑”到“能交付”的差距你有没有遇到过这种情况本地双击脚本跑得顺顺利利把 .py 文件发给同事对方要么说“我没装 Python”要么双击后闪退要么报一堆 ModuleNotFoundError。这时候你才意识到自己写的程序从来都只是“在你自己机器上能跑”离“给别人用”还差一大截。pyinstall 打包要解决的正是这个从源码到安装包的最后一公里。它把 Python 解释器、依赖库和你的代码打进同一个产物让目标机器不需要预装任何环境。适合谁用写工具脚本的运维、做桌面小应用的开发者、需要把算法交付给非技术同事的分析师。不适合谁用追求极小体积、需要规避杀软误报或者做商业级安装向导的人——这些场景 pyinstall 也能做但你需要先知道它的边界在哪。2. 先弄明白 PyInstaller 的打包模型再动手不翻车2.1 什么会被打进 exe什么不会很多人第一次打包失败是因为根本不清楚 PyInstaller 的工作方式。它做的事情可以概括为三步分析你入口脚本里的 import 语句找到所有需要的内置模块和第三方库把 Python 解释器、这些库和你的脚本字节码一起打包生成一个可执行的启动器。注意一个关键点它做的是静态分析不是动态跟踪。你代码里用了__import__()、importlib.import_module()这种运行时导入PyInstaller 默认是看不到的。同理通过字符串拼接路径去读取的配置文件、模型权重、图片资源也不会自动进包。理解了这一点你就能解释很多打包后“文件明明在却读不到”的诡异现象——不是程序 bug是打包模型本身决定的。另外一个要提前说清楚的概念是 onedir 和 onefile。默认模式是 onedir也就是生成一个文件夹里面有 exe 和一堆依赖文件-F参数打包成单文件。单文件看起来干净但它的真相是运行时先把自身解压到临时目录再执行里面的主程序所以启动慢、容易被杀软盯上、临时目录里还可能残留版本冲突。onedir 模式启动快、排错直观缺点是分发时要发整个文件夹。我的建议是自己测试用 onedir交付给非技术用户时再用 onefile 配合资源外置后面会专门讲这个组合。2.2 用最小命令跑通第一个安装包先不谈复杂配置用一条命令把最简单的脚本打包出来建立正反馈。假设你有个hello.pyimport sys from PySide6.QtWidgets import QApplication, QLabel if __name__ __main__: app QApplication(sys.argv) label QLabel(Hello from PyInstaller) label.show() sys.exit(app.exec())打开终端安装 PyInstallerpip install pyinstaller然后执行打包pyinstaller -F hello.py看到Building EXE和completed successfully字样后在dist目录下找hello.exe。双击它如果弹出了那个标签窗口恭喜你第一个安装包跑通了。说下几个参数的含义-F表示打包成单文件生成物只有一个 exe方便拷贝-w表示不显示控制台窗口适合带界面的程序-c是默认值显示控制台适合命令行工具。在dist目录旁边你还会看到build目录和hello.spec文件——build是中间缓存删掉不影响spec文件则是本次打包的完整配置记录下次想改配置不用敲一长串命令直接改 spec 再执行pyinstaller hello.spec就行。改 spec 的好处是配置可控、可提交到版本库团队其他人拉下来用同一条命令就能复现一致的打包结果。3. 给真实项目用的打包配置spec 文件、资源路径和动态导入3.1 从命令行参数到 spec 文件什么时候必须用 spec命令行参数适合快速验证但真实项目里你会遇到三个命令行很难搞定的场景需要排除某个有冲突的模块、需要把多个入口脚本打进同一个包、需要精细控制资源文件的归属。这时候就该改用 spec 文件。用pyi-makespec可以快速生成一个初始 spec也可以直接在命令行打包后修改自动生成的 spec。一个典型的 spec 文件长这样# hello.spec a Analysis( [hello.py], pathex[], binaries[], datas[], hiddenimports[PySide6.QtCore], hookspath[], excludes[numpy], noarchiveFalse, ) pyz PYZ(a.pure) exe EXE( pyz, a.scripts, a.binaries, a.datas, [], namehello, debugFalse, bootloader_ignore_signalsFalse, stripFalse, upxTrue, consoleFalse, iconapp.ico, )关键字段逐个说Analysis阶段的datas用来声明额外的数据文件格式是(源路径, 目标目录)的元组列表hiddenimports用来补充 PyInstaller 静态分析发现不了的模块我的 PySide6 程序第一次打包后启动就报ModuleNotFoundError: PySide6.QtCore就是靠把它加进hiddenimports解决的excludes用来排除用不到的模块比如打包 GUI 程序时排除numpy可以把体积减掉一大截。EXE阶段的console控制是否显示黑色终端窗口icon指定图标文件路径不设置就是 PyInstaller 默认的红色图标。注意一个容易踩的细节把datas写进Analysis之后如果文件路径变了一定要重新生成 spec 再打包光改命令行参数不会同步更新 spec。另外binaries字段处理的是需要随包分发的动态链接库最常见的场景是某些第三方库通过ctypes加载的本地.dll如果程序运行时报找不到某个 DLL优先去这里查。3.2 资源文件读取的正确姿势别用相对路径命令行工具相对路径可能还能凑合带界面或带模型的程序一旦打包成 exe工作目录往往不是你 exe 所在的目录。用户从资源管理器双击启动时工作目录通常是 exe 所在目录但如果用户在命令行里敲C:\path\to\app.exe工作目录就是他当前所在的目录这时你用open(config.ini)直接读找不到文件几乎是必然的。onefile 模式更特殊所有资源被解压到临时目录直接在 exe 旁边放配置文件根本读不到。通用做法是写一个resource_path函数同时兼顾开发环境和打包环境import sys import os def resource_path(relative_path): 获取资源文件的绝对路径兼容开发态和打包态 if hasattr(sys, _MEIPASS): # PyInstaller 临时解压目录 base_path sys._MEIPASS else: # 开发态脚本所在目录 base_path os.path.dirname(os.path.abspath(__file__)) return os.path.join(base_path, relative_path)用法很简单原来写open(config.ini)的地方全部改成open(resource_path(config.ini))。这段代码的原理是PyInstaller 在运行打包后的程序时会设置sys._MEIPASS指向资源解压目录开发态没有这个属性退回脚本所在目录。不管哪种模式你拿到的都是程序真正能找到资源的根路径不会再受工作目录影响。还有一类程序需要在 exe 旁边动态读写配置文件比如用户改完配置下次启动还要读。这类文件不能打进包里应该在首次启动时检查 exe 所在目录不存在则从包内资源拷贝一份出来。常见做法是def ensure_config(): exe_dir os.path.dirname(os.path.abspath(sys.executable if hasattr(sys, frozen) else __file__)) target os.path.join(exe_dir, config.ini) if not os.path.exists(target): shutil.copy(resource_path(config.default.ini), target) return target这里的逻辑区分了两种文件config.default.ini是打包进 exe 的只读模板config.ini是生成在用户可见目录里的可写副本。注意sys.executable在打包后指向 exe 路径在开发态指向 python.exe所以也要做hasattr(sys, frozen)判断。3.3 动态导入和隐式导入打包后报 ModuleNotFoundError 的根源动态导入是 PyInstaller 用户最容易翻车的重灾区。比如你的代码里写了__import__(fplugin_{name})或者用importlib.import_module(module_str)PyInstaller 在静态分析阶段看到的是字符串变量没法确定到底要打包哪个模块结果就是运行时才报ModuleNotFoundError。解决办法有三个层次。最直接的把可能用到的模块写进hiddenimports比如hiddenimports[plugin_a, plugin_b]简单粗暴缺点是你要维护一份模块名单漏一个炸一个。第二个层次用collect_submodules函数自动搜集某个包下的所有模块写在 spec 文件里from PyInstaller.utils.hooks import collect_submodules hiddenimports collect_submodules(plugins)这行代码的作用是遍历plugins包下的所有子模块并全部加入打包列表适合插件化架构。第三个层次有时候某个库用了比较隐蔽的动态导入方式collect_submodules也救不了这时要去 PyInstaller 的 hooks 目录看有没有现成的 hook 文件常见的科学计算和 GUI 库基本都有官方 hook。如果你用的库很冷门那只能手动试错把运行时报缺的模块一个个加进hiddenimports。还有一种不报错但行为异常的情况打包后程序能启动但某个功能一调用就闪退或静默失败这往往是隐式导入没有触发报错而是走了异常兜底逻辑。排查思路是先在开发环境把目标功能完整跑一遍确认依赖收集干净再用--log-levelDEBUG重新打包在输出日志里搜hidden import相关提示。这条日志会直接列出哪些模块是运行时才发现的是定位隐式导入问题最直接的线索。4. 打包避坑依赖、路径、杀软与体积的 5 个真实翻车点4.1 现象打包后的 exe 双击没反应进程闪退这个现象在论坛里被问烂了原因却各有不同。最常见的两种代码顶层有语法错误或运行时错误但被-w参数隐藏了控制台报错信息一闪而过你根本看不到另一个是代码里用了multiprocessing但入口没有加保护。先说第一种解决方法是先用pyinstaller -F -c hello.py打包一个带控制台的版本命令行运行 exe错误信息会直接打在终端里。95% 的情况是缺模块、路径找不到、配置文件格式错误看到报错就一目了然。确认没问题后再换-w参数。第二种要用到multiprocessing的都知道Windows 下必须把入口逻辑放进if __name__ __main__:里否则会递归创建子进程把系统资源耗尽。打包后同样要遵守这个规则而且要加一句multiprocessing.freeze_support()。这是个固定的坑PyInstaller 的官方文档里明确写了Windows 上打包multiprocessing程序必须调用这个函数位置要放在main函数的第一行。4.2 现象onedir 模式能跑打成 onefile 就报错这是 onefile 模式特有的问题。原因是单文件模式运行时会把整个包解压到%TEMP%下的临时目录程序退出后自动清理。如果你的程序在运行时动态创建了新文件或者依赖某个固定路径下的外部文件解压目录和你的预期路径对不上就会出问题。具体来说资源读取要用前面写的resource_path函数写入操作要放到用户目录或 exe 所在目录不能写到_MEIPASS里。另外一个隐蔽问题是杀毒软件某些杀软会把_MEIPASS临时目录当作可疑行为实时扫描拖慢启动速度甚至直接拦截。如果程序确实需要 onefile可以考虑加白名单或换 onedir 发布。4.3 现象打包成功但目标机器上缺少 VC 运行库PyInstaller 会把 Python 解释器打进去但不会把 MSVC 运行库完整打进去。如果你的代码用到了某些依赖底层 C 扩展的库目标机器又比较干净很可能在导入时报DLL load failed或直接提示缺少VCRUNTIME140.dll。解决方式有两条路一是把 VC 运行库作为前置依赖让用户先安装二是把你本机的vcruntime140.dll和msvcp140.dll手动加进binaries或直接放到 onedir 目录里。第二个方案更省事但要注意版本架构64 位程序就放 64 位的 DLL混用会直接崩溃。判断是不是这个原因很简单目标机器上装一下 VC 运行库试试能跑就是它的问题。4.4 现象exe 被 Windows Defender 杀这是 PyInstaller 用户永远的痛。原因不复杂PyInstaller 打包后的程序特征比较明显很多木马也喜欢用类似的打包方式杀软为了安全会直接一刀切。onefile 模式尤其容易被误报因为它的解压行为本身就像恶意软件。规避手段按优先级排序先试 onedir 模式加数字签名签名是降低误报最有效的方式自签名证书也能起一点作用但不保证完全通过其次尽量减少不必要的 hook 和模块减小体积和复杂度再不行就换 Nuitka 试试它把 Python 代码编译成 C 再编译成机器码特征和 PyInstaller 完全不同误报率低很多。但 Nuitka 的编译时间很长项目复杂时构建速度慢得让人怀疑人生所以一般还是先调整 PyInstaller 配置。4.5 现象打包出来的 exe 体积大得离谱一个 hello world 打包出来 40MB 起步带 PySide6 或 PyQt 轻松过百兆。说不上是 bug但确实劝退很多人。体积大的主要原因是把整个 Python 解释器和所有 import 的库全部塞了进去而很多库你只用到了一个函数。排查方法先用pyinstaller --log-levelDEBUG看看打包日志里有哪些模块进入最终产物对用不到的重量级库加excludes比如打包 GUI 程序时排除tkinter、numpy、pandas体积立刻瘦一圈。另一个常见做法是换成精简依赖的实现比如界面库从一个重量级框架换成 pywebview 加本地 HTML 页面体积和资源占用都会好看很多。最后可以用 UPX 压缩可执行文件但要注意某些杀软对 UPX 壳也很敏感压缩完记得重新测一下被杀概率。5. 让生成物更接近“安装包”图标、版本信息与目录分发5.1 给 exe 加图标和版本信息去掉默认红标PyInstaller 的默认图标是一个红色方块用户看到第一眼就不专业。加图标很简单准备一个.ico文件命令行加--iconapp.ico或者修改 spec 文件里的icon字段。需要注意.ico文件不是简单把 PNG 改后缀就行要用在线转换工具或 Pillow 生成合法格式否则打包阶段会报错。版本信息是另一个容易被忽略的点。右键 exe 点“详细信息”默认只有“文件描述”和“产品名称”几条想自定义版本号、版权、公司名需要写一个版本资源文件。用pyi-grab_version可以从任意一个可执行文件里提取版本资源模板再修改内容最后在 spec 文件的EXE段用version指向它。版本号一定要跟着发版走不然用户报 bug 时你都分不清他用的哪个版本。5.2 用 onedir 加资源外置做出像样的发布目录前面说过 onedir 比 onefile 好维护配合资源外置后发布形态其实更接近一个绿色安装包。目录结构长这样myapp/ ├── myapp.exe ├── config.ini # 用户可改的配置 ├── resources/ │ ├── model.bin │ └── data.json ├── _internal/ # PyInstaller 生成的依赖目录 │ ├── base_library.zip │ ├── python312.dll │ └── ...操作上先把model.bin等静态资源放在项目根目录打包时用--add-data resources;resources加进去发布时把整个目录发给用户首次启动时程序会检查resources是否存在不存在就从_internal里拷出模板存在则直接读取。这样用户更新主程序时不用重拷资源你还可以把资源目录单独做增量更新对带宽不友好的场景很实用。5.3 用 Inno Setup 把目录做成真正的安装包PyInstaller 本身不生成安装向导如果需要用户能选择安装路径、开始菜单快捷方式下一步就是接一个安装包工具。Windows 上我一般用 Inno Setup免费、脚本清晰、支持自定义页面。写一个最简单的安装脚本[Setup] AppNameMyApp AppVersion1.0.0 DefaultDirName{autopf}\MyApp OutputDirinstaller OutputBaseFilenameMyAppSetup [Files] Source: dist\myapp\*; DestDir: {app}; Flags: recursesubdirs [Icons] Name: {autoprograms}\MyApp; Filename: {app}\myapp.exe这个脚本定义了三件事安装目录默认为Program Files\MyApp把dist\myapp下的所有文件递归拷贝到安装目录在开始菜单创建快捷方式。编译后得到一个MyAppSetup.exe这才是你真正能发给用户的东西。Inno Setup 里还可以加卸载逻辑、注册表项、文件关联基本覆盖桌面应用分发的全部需求。5.4 版本管理与持续打包项目一迭代打包就会变成重复劳动。两个建议把 spec 文件提交进 Git保证任何人 checkout 后跑pyinstaller myapp.spec得到一致产物把版本号写进一个version.py打包时读出来传给 spec避免每次手动改。更工程化一点的做法是接 CI在 GitHub Actions 或 GitLab CI 上跑pip install pyinstaller pyinstaller myapp.spec产物作为流水线 artifact 上传。这样每次打 tag 自动出包不依赖某一个人的本地环境。本地环境和 CI 的差异也值得注意CI 机器的 Python 版本要和你的目标用户一致否则可能打出来的包在用户机器上有兼容性问题。6. 打包验证与回归每次发版前我必做的 5 个检查打包完成不是结束验证才是。我自己的发版流程里下面这 5 个检查一个都不能少全是血泪教训换来的。第一干净环境验证。准备一台没有 Python、没有 VC 运行库的虚拟机或另一台物理机把打包产物拷过去跑一遍主流程。很多问题在开发机上永远测不出来因为你的机器上装满了各种依赖缺了什么都自动补齐了。第二全功能冒烟测试。把程序里每个按钮、每个菜单项都点一遍重点验证那些会读取外部资源、会写日志、会用动态导入的功能。打包不会改你的业务逻辑但依赖收集不全会让部分功能静默失效这种 bug 最阴险——界面能启动点某个按钮就崩。第三杀软扫描。把产物丢到 VirusTotal 上扫一遍看有哪些引擎报毒。别全信它但连续几个版本都没问题的新版本突然多了好几家报毒一定要查是不是引入了什么奇怪的依赖。第四网络抓包验证。程序如果有联网功能用 Fiddler 或 Wireshark 抓一次包确认没有请求发往意外地址。这既是安全习惯也是排查连接问题的手段。第五版本信息核对。右键 exe 查看详细信息确认版本号、公司名、产品名都正确。这步看似无关紧要但用户报 bug 时你靠它判断版本少了它只能干瞪眼。要说个人习惯我每改一次依赖就重新打一次包验证而不是攒到最后一次性处理。依赖是打包失败的最大变量让它保持“最新验证过”的状态能省掉大量排错时间。PyInstaller 打包上手不难但真正稳定地发版靠的是对依赖、路径和运行模型的持续把控。希望这篇笔记能让你少走几步弯路把打包发版这件事变成流水线里一个稳定环节。本文还有配套的精品资源点击获取

相关新闻

C++进阶指南:从类型系统到内存模型,理解设计动机而非死记语法

C++进阶指南:从类型系统到内存模型,理解设计动机而非死记语法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 1:33:08 阅读更多 →
深度学习验证码识别:从模型训练到落地的完整路线

深度学习验证码识别:从模型训练到落地的完整路线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 1:33:08 阅读更多 →
Qt视频播放器开发:QMediaPlayer与QVideoWidget协作与避坑指南

Qt视频播放器开发:QMediaPlayer与QVideoWidget协作与避坑指南

1. 从零拆解QMediaPlayer与QVideoWidget的协作逻辑很多人第一次在Qt里做视频播放,脑子里冒出来的第一个念头是“找个控件拖上去,调个play()就完事了”。我当初也是这么想的,结果在QVideoWidget上折腾了大半天,画面死活出不来&…

2026/10/13 1:33:08 阅读更多 →

最新新闻

Reclilisib:从PI3K激动剂到选择性辐射保护剂的双重角色

Reclilisib:从PI3K激动剂到选择性辐射保护剂的双重角色

做肿瘤放疗研究的朋友应该都有过这种纠结:治疗窗口太窄,射线过去,肿瘤细胞和正常组织一起遭殃。我们这些年一直在找"选择性辐射保护剂"——最好能保护正常细胞,却不给肿瘤细胞留活路。我第一次注意到Reclilisib&#xf…

2026/10/13 2:18:27 阅读更多 →
MFC连接MySQL实战:ODBC封装、CRUD与避坑手册

MFC连接MySQL实战:ODBC封装、CRUD与避坑手册

简介:这是一套面向MFC桌面应用开发者的MySQL数据库访问示例工程,核心演示如何借助ODBC标准数据库接口,在C程序中完成连接建立、SQL查询、结果集遍历与数据更新等常用操作。压缩包内共含117个文件,压缩后约181KB;其中49…

2026/10/13 2:18:27 阅读更多 →
从Java转运营第5天:用技术思维做抖音新号,先学会拆解对标账号

从Java转运营第5天:用技术思维做抖音新号,先学会拆解对标账号

今天是我从 Java 转运营的第 5 天,也是正式开始折腾抖音新号起号的日子。说实话,从写完第一版账号简介到研究“到底该发什么”,我踩的坑比写的需求还多。如果把起号比作一次系统上线,那我 Day05 最大的收获就是:先别急…

2026/10/13 2:18:27 阅读更多 →
安卓手机跑 Windows 应用完整指南:Winlator 安装、配置与排障实操

安卓手机跑 Windows 应用完整指南:Winlator 安装、配置与排障实操

安卓手机跑 Windows 应用完整指南:Winlator 安装、配置与排障实操 【免费下载链接】winlator Android application for running Windows applications with Wine and Box86/Box64 项目地址: https://gitcode.com/GitHub_Trending/wi/winlator 手机里下了个 .…

2026/10/13 2:18:27 阅读更多 →
eksctl v0.149.0 发布解析:AWS 区域环境变量修复与 eksctl-io 组织迁移

eksctl v0.149.0 发布解析:AWS 区域环境变量修复与 eksctl-io 组织迁移

云原生容器编排DevOps 【免费下载链接】eksctl The official CLI for Amazon EKS 项目地址: https://gitcode.com/gh_mirrors/ek/eksctl 点击查看 免费下载 本指南围绕 eksctl 官方 CLI 的 v0.149.0 发布说明展开,逐项解析该版本引入的功能更新、两个关…

2026/10/13 2:18:27 阅读更多 →
Win11升级后应用打不开?从升级机制到修复方案全解析

Win11升级后应用打不开?从升级机制到修复方案全解析

最近一段时间,我这边处理最多的求助不是软件本身崩溃,而是同一句话:升完 Win11 之后,XX 应用打不开了。有的是设备厂商的配置工具,点开就没反应;有的是行业软件启动后直接闪退;还有的是虚拟机一…

2026/10/13 2:17:27 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →