Python 相对导入与绝对导入的坑:从原理到工程实践
Python 的相对导入问题,表面看是语法报错,实质上是包上下文、运行方式和 `sys.path` 共同作用的结果。把 `__name__`、`__package__`、`python -m` 和标准包结构放到一条线上理解,很多“IDE 能跑、命令行就炸”的问题就能直接定位。 很多 Python 导入报错并不是代码写错,而是模块被解释器放进了错误的运行语境里。
Python 的相对导入问题,表面看是语法报错,实质上是包上下文、运行方式和 `sys.path` 共同作用的结果。把 `__name__`、`__package__`、`python -m` 和标准包结构放到一条线上理解,很多“IDE 能跑、命令行就炸”的问题就能直接定位。 很多 Python 导入报错并不是代码写错,而是模块被解释器放进了错误的运行语境里。

这篇文章用一个可直接运行的 Python 示例,讲清楚如何从文本里提取两类编号:2 到 8 位的字母数字混合串,以及 4 到 7 位的纯数字串。文中保留完整代码、逐段拆解正则规则,并结合测试样本说明为什么能匹配、为什么会被过滤。

这篇文章围绕 Python 操作 PDF 的常见绘图需求,梳理了 Spire.PDF 中直线、虚线、矩形、椭圆、自定义路径和透明度控制的基本用法。文中保留关键代码与参数说明,并给出适合报表、标注和模板生成场景的判断重点。

Conda 虚拟环境里 `torch.cuda.is_available()` 返回 `False`,很多时候不是 PyTorch 安装错了,而是环境没有正确找到系统 CUDA。本文梳理虚拟环境与动态链接器的关系,对比三种配置方式,并给出排查命令与推荐脚本模板。 在 Conda 虚拟环境里遇到 `torch.cuda.is_available()` 返回 `False`,很多人第一反应是重装 PyTorch 或怀疑驱动出了问题,但真正卡住的常常是环境变量和动态链接路径。

本文介绍如何用 Python 配合 Spire.Doc 提取 Word 文本框里的文字、表格和图片,重点说明 `TextBox`、`Body.ChildObjects`、`Body.Tables` 与 `DocPicture` 的访问方式,并补充嵌套文本框、编码和换行等实务细节,便于做文档迁移与批量处理。 Word 文档里的文本框经常承载说明文字、表格和配图,但它们不属于正文主流程,批量处理时最容易被漏掉。

在 Ubuntu 上用 Python 做桌面应用,关键不在“能不能做”,而在于选对 GUI 框架。本文按入门难度、原生集成、跨平台能力和应用场景,梳理 Tkinter、PyQt/PySide、PyGObject、Kivy 四条路线,并保留安装命令与示例代码,方便直接上手。 在 Ubuntu 上开发 Python 桌面应用,真正决定效率的往往不是语法,而是前期框架选型是否贴合项目目标。

在 Ubuntu 中给 Python 程序加日志,常见做法主要有两类:标准库 `logging` 和第三方库 `loguru`。前者稳定通用、零额外依赖,后者上手更快,还支持日志轮转。本文按实际使用场景拆解两种写法,并说明各自适合什么需求。

实测 Django 6.0.7 自带 Tasks、Celery 5.6.3 与本机 Redis 后可以确认:Tasks 统一了任务声明和入队接口,但并不自带生产可用的消息队列与 Worker。它能降低业务层对具体任务库的耦合,却不能单独替代 Celery 的执行、重试、路由与运维能力。

Linux 上配置 Python 时,最常见的问题通常集中在安装、PATH、权限、依赖、证书、编码、多版本冲突和虚拟环境几类。本文按排查顺序整理对应现象与处理方法,方便你快速判断故障点并选用更稳妥的修复方案。

Linux 下的 Python 环境优化,核心不是堆工具,而是把版本、隔离、依赖和运行参数几件事理顺。本文按开发到部署的顺序梳理可直接落地的方法,帮助你判断哪些做法适合日常开发,哪些更适合团队协作或生产环境。

Django 6.1 RC1 引入全新的 `MAILERS` 配置,并计划在 Django 7.0 移除旧邮件设置。对老项目来说,这不是简单改名,而是从单一全局后端切换到多通道路由。本文结合隔离实验、迁移顺序和常见误区,整理出一套更稳妥的升级办法。

本文用 Spire.PDF 梳理 Python 给 PDF 添加页眉页脚的几种常见做法,包括逐页绘制文本、插入 Logo、按页面定制不同页眉,以及用页面模板自动生成页码。重点保留坐标、字体、模板和自动字段这些实现细节,方便你判断哪种方式更适合批量生成或正式文档场景。
