当前位置: 首页 > article >正文

MacOS高效配置FFmpeg与FFprobe的完整指南

1. 为什么你的FFmpeg安装总是失败先避开这些坑如果你在Mac上折腾过FFmpeg大概率经历过这样的场景跟着网上某个教程一通操作猛如虎最后在终端里输入ffmpeg -version结果给你来一句“command not found”。那一刻的挫败感我太懂了。折腾半天问题往往就出在一些看似不起眼的细节上尤其是路径配置和系统权限。MacOS和Windows、Linux在软件管理上思路不太一样它没有像Ubuntu那样的apt也没有Windows那种一键安装包直接帮你把环境变量配好。所以很多朋友卡住真不是FFmpeg本身复杂而是没摸清Mac的“脾气”。我自己刚开始用Mac做视频处理时也踩过不少坑。比如直接从官网下载编译好的静态版本解压出来几个可执行文件双击运行系统弹窗警告“无法验证开发者”。你按照提示去系统设置里“安全性与隐私”点一下允许以为这就完了不这仅仅是第一步。更大的坑在于你把这些可执行文件随手扔在“下载”文件夹或者桌面上然后试图在终端里调用系统根本找不到它们。因为终端无论是默认的bash还是现在流行的zsh只会在几个特定的系统路径里寻找命令比如/usr/local/bin、/usr/bin。你放在别的地方它自然就“不认识”了。所以这篇指南的核心就是帮你把这些“坑”提前标出来用最直白的方式带你走通一条高效、稳定、一劳永逸的配置路径。我们不止要“装上”还要装得“明白”装得“好用”确保以后无论是用命令行转码还是被Premiere、Final Cut Pro这些专业软件调用都不会再出岔子。2. 安装前的准备选对方法事半功倍在Mac上装FFmpeg主流方法其实就三种各有优劣。选对了起手式后面能省很多麻烦。2.1 方法对比静态编译版 vs 包管理器1. 官网静态编译版推荐给大多数用户这就是原始文章里提到的方法。你去FFmpeg官网找到macOS的静态编译版本下载。它的优点是独立、干净、版本可控。下载下来就是一个压缩包解压后得到ffmpeg、ffprobe、ffplay这几个可执行文件。它不依赖系统里任何其他的库所有需要的编解码器都打包在里面了开箱即用。对于新手或者不希望污染系统环境的用户来说这是最稳妥的选择。我们这篇指南也将以这种方法为主线进行详解。2. 使用Homebrew安装推荐给开发者或常用命令行的用户Homebrew是Mac上强大的包管理器相当于Mac的“软件商店”命令行版。如果你已经装了Homebrew安装FFmpeg就是一行命令的事brew install ffmpeg它的优点是极其方便自动处理依赖和路径。Homebrew会把FFmpeg安装到它自己的目录通常是/usr/local/Cellar/ffmpeg下并自动创建符号链接到/usr/local/bin这样你打开终端就能直接用。而且未来升级也只需要brew upgrade ffmpeg。缺点是它安装的版本可能不是最新的而且会引入一系列依赖库。如果你对Homebrew不熟或者系统环境比较“洁癖”可能会觉得它有点“重”。3. 从源码编译适合极客或需要特定定制功能的用户这种方法最灵活也最复杂。你需要先安装Xcode命令行工具、以及可能需要的各种音视频库如x264, fdk-aac, libvpx等然后从FFmpeg的Git仓库拉取源码自己配置编译选项最后make make install。这能让你启用或禁用任何你想要的功能模块。但对于99%的普通用户来说这属于“杀鸡用牛刀”耗时耗力容易出错不推荐。对于咱们的目标——“高效配置并立即投入使用”我强烈建议新手和追求稳定的用户选择官网静态编译版。它步骤清晰结果确定不受网络或Homebrew源的影响是理解整个配置过程的最佳起点。2.2 检查与准备你的系统环境动手之前花一分钟做两个检查确认终端Shell类型从macOS Catalina开始默认的Shell从bash换成了zsh。这直接影响我们后面配置环境变量的文件。打开“终端”应用在窗口里输入echo $SHELL如果显示/bin/zsh那么你需要操作的文件就是~/.zshrc。如果显示/bin/bash那么文件是~/.bash_profile或~/.bashrc。本文以zsh为例bash用户同理替换文件名即可。预留操作权限后续我们需要在用户目录下创建文件夹、编辑隐藏的配置文件。确保你知道自己电脑的管理员密码因为有些操作可能需要sudo权限不过我们尽量用用户级操作更安全。3. 一步步详解下载、放置与路径配置好了理论说完咱们开始实战。我会把每一步都掰开揉碎确保你跟着做就能成。3.1 第一步下载正确的静态编译版本别去乱七八糟的第三方网站下直接去FFmpeg官网最靠谱。打开浏览器访问https://ffmpeg.org/download.html。页面上找到“macOS”相关的部分你会看到一些提供静态编译版的链接。我通常推荐使用https://evermeet.cx/ffmpeg/这个站点它提供了清晰、直接的下载链接。进入evermeet.cx的FFmpeg页面后你会看到针对不同架构Intel或Apple Silicon的下载链接。如果你的Mac是M1、M2、M3芯片就选标注“Apple Silicon”的如果是老款的Intel芯片Mac就选“Intel 64-bit”。下载下来的是一个.zip压缩包比如ffmpeg-6.0.zip。3.2 第二步解压与处理系统安全警告下载完成后双击这个zip文件系统会自动解压。你会得到几个没有后缀名的文件最主要的就是ffmpeg、ffprobe和ffplay。尝试双击它们中的任何一个macOS都会弹出一个警告对话框说“无法验证开发者”。这是macOS Gatekeeper安全机制在起作用不是文件有问题。处理这个警告有两种方式方式A临时允许在警告框出现时按住键盘上的Control键然后用鼠标点击对话框里的“打开”按钮。这样就能运行一次。方式B永久允许打开“系统设置” - “隐私与安全性”向下滚动你可能会看到一个提示说“已阻止使用‘ffmpeg’因为来自身份不明的开发者”。旁边会有一个“仍要打开”的按钮点击它并输入你的电脑密码确认。之后这个FFmpeg文件就被加入了白名单。但是请注意以上操作只是为了验证文件可以执行。我们最终并不会通过双击来使用它们而是通过命令行。所以即使你不做这个“允许”操作也不影响后续的配置因为命令行调用不经过这个图形界面的安全检查。3.3 第三步建立规范的专属文件夹关键这是原始文章里强调的也是最容易出错的一步。你不能让这几个可执行文件“无家可归”。我们需要为它们建立一个永久的、规范的“家”。打开“访达”Finder。进入你的用户主目录。你可以按Shift Command H快速到达或者点击访达边栏的“房子”图标。在你的主目录下新建一个文件夹命名为FFmpeg。注意大小写建议保持一致就叫FFmpeg。双击进入这个新建的FFmpeg文件夹。在里面再新建一个文件夹命名为bin。这个bin文件夹就是专门用来存放可执行程序的。将刚才解压出来的ffmpeg、ffprobe、ffplay这三个文件拖拽或复制到FFmpeg/bin文件夹里。现在你的目录结构应该是这样的/Users/你的用户名/FFmpeg/bin/里面躺着三个核心文件。为什么一定要建bin文件夹这是一种约定俗成的规范。bin是 “binary”二进制可执行文件的缩写。把程序放在这里逻辑清晰以后你自己也好管理。更重要的是当我们把.../FFmpeg/bin这个路径添加到系统的环境变量PATH里时系统就能精准地找到它们。3.4 第四步配置环境变量PATH核心步骤这是让终端“认识”FFmpeg命令的灵魂操作。环境变量PATH就像终端的一张“寻人启事”列表里面记录了一系列目录路径。当你在终端输入一个命令比如ffmpeg终端就会按照PATH列表里的顺序一个一个目录去找看看有没有叫ffmpeg的程序。我们要做的就是把我们自己的FFmpeg/bin目录添加到这张列表里。打开“终端”应用。输入以下命令用vim编辑器打开zsh的配置文件如果你用的是bash就把.zshrc换成.bash_profilevi ~/.zshrc按回车后你会进入一个看起来有点“复古”的文本编辑器界面。这个编辑器默认是“命令模式”不能直接打字。按下键盘上的i键你会看到左下角出现-- INSERT --字样这说明你进入了“插入模式”可以输入文字了。用方向键或鼠标如果终端支持将光标移动到最后一行然后输入以下内容请务必替换{XXX}为你的实际用户名export PATH$PATH:/Users/你的用户名/FFmpeg/bin举个例子如果你的用户名是zhangsan那么这一行就应该是export PATH$PATH:/Users/zhangsan/FFmpeg/bin这行命令的意思是将新的PATH变量设置为“旧的PATH值 冒号 我们新的路径”。$PATH代表了旧的路径列表这样添加不会覆盖掉系统原有的重要路径。输入完成后按一下Esc键退出插入模式左下角的-- INSERT --会消失。接着输入:wq冒号、w、q然后按回车。这个命令是“保存并退出”。如果你之前没改过这个文件直接保存即可如果系统提示权限问题可以用:wq!强制保存。3.5 第五步让配置立即生效并验证上一步我们修改了配置文件但这个修改还没有被当前的终端会话加载。我们需要“刷新”一下配置。在终端里输入以下命令source ~/.zshrc这条命令会让终端重新读取并执行.zshrc文件里的所有设置这样我们新加的PATH就立刻生效了。激动人心的验证时刻输入以下命令ffmpeg -version如果一切顺利你会看到一大段输出最开头几行显示了FFmpeg的版本号、编译配置等信息。这就意味着FFmpeg已经成功安装并配置好了同样验证一下FFprobeffprobe -version也应该能看到版本信息。恭喜你至此FFmpeg和FFprobe已经在你的Mac上安家落户并且可以在任何终端窗口、任何目录下直接使用了。4. 进阶使用与问题排查配置好了咱们不能只满足于“能用”还得“用好”。这里分享几个立刻就能用上的实用技巧和常见问题的解决方法。4.1 第一个实用命令快速查看视频信息ffprobe是个神器用来查看媒体文件的元数据信息速度快得惊人。比如你想知道一个视频my_video.mp4的编码格式、分辨率、码率、时长等只需要ffprobe my_video.mp4输出信息会比较详细。如果你只关心基础信息可以加个-v quiet -show_format -show_streams参数组合或者直接用我常用的简洁命令ffprobe -v error -show_entries formatduration,size,bit_rate:streamcodec_name,width,height,r_frame_rate -of defaultnoprint_wrappers1 my_video.mp4这个命令会只输出时长、文件大小、码率、音视频编码、分辨率、帧率等关键信息非常整洁。4.2 第一个实用命令转换视频格式ffmpeg最基本的功能就是转码。假设你有一个input.mov文件可能是相机拍的想把它转换成更通用的output.mp4并且保持不错的画质命令很简单ffmpeg -i input.mov -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4我来解释一下这几个常用参数-i input.mov指定输入文件。-c:v libx264指定视频编码器为H.264libx264。-preset medium编码速度与压缩率的平衡点。可选ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow。越快压缩率越低文件越大。-crf 23恒定质量因子范围是0-51默认23。数值越小质量越高文件越大23是视觉无损的一个常用值。-c:a aac指定音频编码器为AAC。-b:a 128k设置音频码率为128kbps。4.3 遇到“command not found”怎么办如果你按照步骤做了但验证时还是提示command not found别慌按这个顺序排查检查路径是否正确在终端里先直接运行完整路径的命令试试/Users/你的用户名/FFmpeg/bin/ffmpeg -version如果这样能成功说明文件本身没问题是PATH环境变量没配好。如果这样也失败说明文件可能没放对位置或者没有执行权限可以用chmod x /Users/.../ffmpeg添加权限。检查环境变量配置在终端输入echo $PATH看看输出的长长一串路径里是否包含/Users/你的用户名/FFmpeg/bin。如果没有说明.zshrc文件修改没生效。检查一下文件是否保存成功或者是否有拼写错误。检查配置文件用cat ~/.zshrc命令查看文件内容确认我们添加的那行export PATH...确实存在。重启终端或新建标签页有时候新开的终端标签页可能没有继承环境变量关闭所有终端窗口重新打开一个再试试。4.4 如何在其他软件中调用很多专业软件如Adobe Premiere Pro、After Effects、DaVinci Resolve或者开源软件如HandBrake、OBS都支持调用外部的FFmpeg。配置方法通常在这些软件的“偏好设置”或“编码设置”里找到一个“外部工具”或“自定义FFmpeg路径”的选项然后把你本地的ffmpeg可执行文件的完整路径填进去也就是/Users/你的用户名/FFmpeg/bin/ffmpeg。这样这些软件就能利用你安装的这个FFmpeg来完成更丰富的编码任务了。5. 维护与升级让FFmpeg常用常新官网的静态编译版不会自动更新。当你需要新版本的功能或安全补丁时需要手动升级。升级步骤去官网下载新版本的静态编译zip包。关掉所有可能正在使用FFmpeg的程序包括终端。打开~/FFmpeg/bin文件夹将旧的ffmpeg、ffprobe等文件删除或者先备份到别处。将新下载解压出来的文件复制到~/FFmpeg/bin文件夹。由于我们只是替换了二进制文件而环境变量PATH指向的目录没变所以替换完成后打开终端新的命令就直接生效了。再次运行ffmpeg -version确认版本已更新。关于Homebrew用户的升级如果你是用Homebrew安装的升级就简单太多了只需要brew upgrade ffmpeg一条命令Homebrew会帮你处理好所有事情。这也是包管理器的一大优势。配置一次永久受益。现在你的Mac已经拥有了强大的多媒体处理能力。从简单的格式转换、视频信息查看到复杂的滤镜应用、流媒体处理FFmpeg这个瑞士军刀都能胜任。下次再遇到视频处理的需求不妨先打开终端试试ffmpeg -h看看它到底有多少隐藏技能你会发现命令行带来的效率和灵活性远超你的想象。

相关文章:

MacOS高效配置FFmpeg与FFprobe的完整指南

1. 为什么你的FFmpeg安装总是失败?先避开这些坑 如果你在Mac上折腾过FFmpeg,大概率经历过这样的场景:跟着网上某个教程,一通操作猛如虎,最后在终端里输入 ffmpeg -version,结果给你来一句“command not fou…...

Superset动态参数图表开发手册:手把手教你处理多值IN查询和日期断层问题

Superset动态参数图表开发手册:手把手教你处理多值IN查询和日期断层问题 你是否曾为在Superset中实现一个看似简单的动态筛选图表而焦头烂额?当业务方提出“我们需要一个能同时筛选多个部门、并且日期轴要连续不间断的报表”时,你信心满满地打…...

利用 Cloudflare CDN 代理,打通 IPv4 访问 IPv6 服务的网络鸿沟

1. 从一次真实的访问困境说起 前几天,我的一位朋友,一位资深开发者,在群里发了个哭笑不得的表情。他在自己家里,用一台旧电脑折腾了个私人网盘(NAS),还搭了个博客,图的就是个自由和…...

浏览器提示“代理服务器可能有问题”?三步排查法帮你快速解决

1. 问题初现:当浏览器突然“罢工” 相信不少朋友都遇到过这种情况:正想打开浏览器查个资料、看个视频,结果页面没刷出来,反而弹出一个让人心头一紧的提示——“代理服务器可能有问题”。那一瞬间,感觉就像开车时突然亮…...

基于龙芯2K0300久久派的OpenCV交叉编译实战:从虚拟机Ubuntu环境搭建到嵌入式视觉应用部署

1. 环境准备:虚拟机与Ubuntu的“新家”搭建 如果你正准备为龙芯2K0300久久派折腾OpenCV,那第一步绝对不是急着敲命令。我见过太多新手朋友,一上来就照着教程安装工具链,结果卡在奇奇怪怪的环境问题上,白白浪费一两天时…...

解锁Minio原生分片上传:从源码解析到实战封装

1. 为什么你需要Minio的原生分片上传? 如果你正在处理大文件上传,比如用户上传的视频、设计稿源文件,或者系统间的数据备份包,那你肯定遇到过这些问题:上传到一半网络断了,得全部重来;或者一个几…...

用VirtualBox快速搭建麒麟信安3.3-6C测试环境:附网络隔离方案与权限管理技巧

用VirtualBox快速搭建麒麟信安3.3-6C测试环境:附网络隔离方案与权限管理技巧 最近在折腾几个安全相关的测试项目,需要一个既能模拟内网环境、又能方便访问外部资源进行软件包更新的沙箱。物理机来回折腾太麻烦,云主机又不够“隔离”&#xff…...

主流人群计数数据集深度解析:从ShanghaiTech到JHU_CROWD++

1. 人群计数数据集:为什么选对数据集,你的模型就成功了一半? 刚入行人脸检测或者人群计数的时候,我踩过最大的一个坑,就是没把数据集研究明白。当时拿到一个开源模型,兴冲冲地用自己的几张图跑了一下&#…...

Mac用户福音:无需Root实现Android屏幕共享与远程控制的完整指南(附常见问题解决)

Mac用户福音:无需Root实现Android屏幕共享与远程控制的完整指南(附常见问题解决) 作为一名长期在Mac生态下工作的开发者或效率追求者,你是否曾为无法在Mac电脑上流畅地查看和控制Android手机屏幕而烦恼?无论是为了演示…...

ReDoc 实战:打造企业级 API 文档的进阶技巧与最佳实践

1. 为什么企业级项目需要 ReDoc?不止是“好看”那么简单 很多朋友第一次接触 ReDoc,可能和我当初一样,觉得它就是个“美化版”的 Swagger UI。确实,它三栏式的布局、清晰的排版,一眼看上去就比 Swagger UI 专业不少。但…...

open3d 结合VSCode与SSH实现远程服务器3D可视化界面本地渲染

1. 为什么我们需要远程3D可视化? 搞3D点云、三维重建或者计算机视觉的朋友,肯定都遇到过这个场景:代码和模型都跑在实验室或者公司的远程服务器上,那机器性能强劲,GPU给力,但就是没有显示器。你想看一眼自己…...

你的服务还在用HTTP轮询?一文搞懂Kafka——从零到百万级吞吐的C++实战

一、你的轮询,正在杀死你的服务器 想象一个场景:你写了一个C++后端服务,前端每隔500毫秒发一次HTTP请求来问"有没有新消息?“。大部分时候服务端回答"没有”,偶尔回一条。系统跑了半年没出过问题。 然后用户量翻了10倍。 你开始发现CPU占用莫名其妙地飙到70%…...

从传统到深度学习:图像分割算法的演进与应用场景解析

1. 图像分割:从“看”到“理解”的关键一步 想象一下,你给电脑看一张照片,它不仅能认出照片里有一只猫,还能精确地告诉你猫的轮廓在哪里,猫的眼睛、鼻子、耳朵分别属于图像的哪些像素。这个过程,就是图像分…...

全方位抓包实战指南:从浏览器到小程序的完整解决方案

1. 为什么你需要掌握全平台抓包? 作为一名和网络请求打了十几年交道的“老司机”,我见过太多开发者朋友在调试问题时,面对浏览器、手机APP、微信小程序或者一个独立的PC桌面应用,不知道如何下手去查看它们背后到底在和服务器“聊”…...

PyBullet实战:从零开始构建你的第一个机器人仿真环境

1. 环境准备:安装与初识PyBullet 想玩机器人仿真,但又觉得那些软件门槛太高?别担心,PyBullet就是为你准备的。我第一次接触它的时候,感觉就像发现了一个宝藏。它本质上是一个Python模块,把强大的Bullet物理…...

ASPP模块的深度解析:从多尺度感知到语义分割的实践应用

1. 为什么你的语义分割模型总“看不清”?聊聊多尺度感知的痛点 做语义分割的朋友,估计都遇到过这样的尴尬:模型对远处的小车识别得挺好,但画面里那棵近在眼前的大树,却死活分不清是树还是电线杆;又或者&…...

如何快速检测和修复BSPHP未授权访问漏洞?安全工程师的实用指南

从实战出发:BSPHP未授权访问漏洞的深度检测与根治方案 最近在帮一家电商平台做安全审计时,他们的技术负责人一脸愁容地找到我,说内部监控发现有几个奇怪的IP在频繁访问管理后台的日志接口,但查了登录记录却没有任何异常。我们花了…...

【SMB协议】Win10访问Linux共享文件夹:从“不安全的来宾登录”到用户映射的实战排障

1. 从“能ping通”到“打不开”:一个混合办公环境的真实困境 最近在帮一个朋友的公司搭建内部文件共享系统,他们有几台Windows 10的办公电脑,需要稳定地访问一台运行Ubuntu的服务器上的共享文件夹。听起来是个很常规的需求对吧?我…...

从MicroPython到C/C++:树莓派Pico双语言开发实战对比

从MicroPython到C/C:树莓派Pico双语言开发实战对比 如果你手头有一块树莓派Pico,面对MicroPython和C/C两种开发方式,是不是有点选择困难?我刚开始接触Pico的时候也纠结过,毕竟两种语言各有各的吸引力。MicroPython上手…...

为什么你的 SQL 测试快生产卡?金仓连接条件下推来解答

你是否遇到过这样的场景:一个看似复杂的SQL,在测试环境运行飞快,一到生产环境就“卡死”,一查执行计划,发现子查询生成了一个巨大的中间结果集,导致后续操作全部陷入性能泥潭? 如果你正被此类场…...

sd工具终极发展蓝图:从简单替换到智能编辑的完整进化指南

sd工具终极发展蓝图:从简单替换到智能编辑的完整进化指南 【免费下载链接】sd Intuitive find & replace CLI (sed alternative) 项目地址: https://gitcode.com/gh_mirrors/sd/sd 在现代开发工作流中,高效的文本处理工具是提升 productivity…...

终极指南:7个最适合用sd处理的真实案例解析

终极指南:7个最适合用sd处理的真实案例解析 【免费下载链接】sd Intuitive find & replace CLI (sed alternative) 项目地址: https://gitcode.com/gh_mirrors/sd/sd sd是一款直观的查找替换命令行工具,专为简化文本处理任务而设计。它采用Ja…...

AppManager Root功能终极指南:解锁Android系统的全部潜力

AppManager Root功能终极指南:解锁Android系统的全部潜力 【免费下载链接】AppManager A full-featured package manager and viewer for Android 项目地址: https://gitcode.com/gh_mirrors/ap/AppManager AppManager是一款功能全面的Android软件包管理器和…...

sd安装终极指南:5种快速安装方法让你告别sed复杂语法

sd安装终极指南:5种快速安装方法让你告别sed复杂语法 【免费下载链接】sd Intuitive find & replace CLI (sed alternative) 项目地址: https://gitcode.com/gh_mirrors/sd/sd sd是一款直观的命令行查找替换工具,作为sed的替代品,…...

Agones性能优化终极指南:10个技巧提升游戏服务器响应速度和吞吐量

Agones性能优化终极指南:10个技巧提升游戏服务器响应速度和吞吐量 【免费下载链接】agones Dedicated Game Server Hosting and Scaling for Multiplayer Games on Kubernetes 项目地址: https://gitcode.com/gh_mirrors/ag/agones Agones是专为Kubernetes设…...

Chartkick全局配置终极指南:一次性设置所有图表的默认参数

Chartkick全局配置终极指南:一次性设置所有图表的默认参数 【免费下载链接】chartkick Create beautiful JavaScript charts with one line of Ruby 项目地址: https://gitcode.com/gh_mirrors/ch/chartkick Chartkick是一款强大的Ruby库,能够让开…...

Chartkick数据源配置终极指南:3种高效数据加载方式详解

Chartkick数据源配置终极指南:3种高效数据加载方式详解 【免费下载链接】chartkick Create beautiful JavaScript charts with one line of Ruby 项目地址: https://gitcode.com/gh_mirrors/ch/chartkick Chartkick是一款能让你用一行Ruby代码创建精美JavaSc…...

React-Draft-Wysiwyg终极测试指南:单元测试与集成测试最佳实践

React-Draft-Wysiwyg终极测试指南:单元测试与集成测试最佳实践 【免费下载链接】react-draft-wysiwyg A Wysiwyg editor build on top of ReactJS and DraftJS. https://jpuri.github.io/react-draft-wysiwyg 项目地址: https://gitcode.com/gh_mirrors/re/react-…...

Django-Oscar部署终极指南:从开发到生产环境的完整迁移流程

Django-Oscar部署终极指南:从开发到生产环境的完整迁移流程 【免费下载链接】django-oscar django-oscar/django-oscar: 是一个基于 Django 的电子商务框架,可以用于快速开发和部署电子商务网站,提供了多种电子商务功能和插件扩展。 项目地…...

Python设计模式终极指南:10个可维护代码的完美实现方法

Python设计模式终极指南:10个可维护代码的完美实现方法 【免费下载链接】interpy-zh 📘《Python进阶》(Intermediate Python - Chinese Version) 项目地址: https://gitcode.com/gh_mirrors/in/interpy-zh 《Python进阶》&…...