从包管理到 Web 框架,再到云托管与鉴权。

一、Python 环境与包管理

Python 虚拟环境

Python 虚拟环境把解释器和第三方包隔离到项目目录,避免全局 site-packages 互相污染。venv 是标准库方案,创建后激活再 pip install,依赖用 freeze 或更现代的锁文件固化。

多项目并行时,各自环境的 Python 次版本可以不同。IDE 要指向对应解释器,否则会出现“本机能跑、CI 缺包”。不要把 venv 目录提交进 Git,只提交生成方式。

容器构建里也可以先建虚拟环境再拷贝,减小镜像层差异。Windows 激活脚本路径与 Unix 不同,文档里要写清两条命令。

Python Conda

Conda 同时管理 Python 版本、二进制依赖和虚拟环境,对科学计算里带原生库的包更省事。Miniconda 只给底座,Anaconda 预装一大套,前者更适合可复现的项目基线。

环境用 environment.yml 描述,频道优先级要固定,否则同一份文件在不同机器解析出不同构建。pip 与 conda 混装时先 conda 再 pip,并记录例外清单。

CI 里缓存包目录能加快构建。许可和默认频道策略近年有变化,商业使用前确认组织是否允许默认源,必要时切到社区频道。

Python包管理

Python 包管理负责安装、隔离和锁定依赖。pip 加 venv 是基线,Poetry、Pdm 和 uv 提供锁文件与更快的解析。Conda/Miniconda 则把非 Python 二进制也纳入同一环境。

生产镜像应安装锁文件中的精确版本,开发机与 CI 使用同一解析器。私有源、平台相关 wheel 和编译型依赖是最常见的“本机能装、流水线失败”。

定期检查漏洞和废弃包,但不要无锁升级。发布自己的库时写清 Python 版本范围和可选依赖,避免把开发工具塞进运行时依赖。

二、Web 框架与数据工具

Python Web框架

Python Web 框架从微框架到全栈都有:Flask 灵活,Django 自带管理后台和 ORM,FastAPI 强调类型提示与异步 OpenAPI。选型看团队熟悉度、是否要 ORM 全家桶,以及接口是否以 JSON API 为主。

异步框架在高并发 I/O 下更省线程,但一旦混入阻塞库就会把事件循环卡住。WSGI 与 ASGI 部署方式不同,网关和超时配置要跟着变。

无论哪套,统一配置、日志、鉴权和迁移工具比纠结框架口号重要。先写清接口契约和数据模型,框架只是承载层。

Flask

Flask 是轻量的 Python Web 微框架,核心只提供路由、请求上下文和 Jinja 模板,其余用扩展拼。适合小工具、内部 API 和教学项目,大型应用需要自己约定蓝图、配置层和错误处理。

应用工厂模式便于测试注入配置。g 对象存请求级缓存,session 默认签在 cookie 里,密钥管理不能马虎。生产用 gunicorn 或 waitress 挂反向代理,不要用内置服务器对外。

扩展生态覆盖 ORM、登录和限流,但版本兼容要自己盯。和 FastAPI 相比,Flask 类型提示与自动文档不是一等公民,接口契约要额外维护。

JupyterLab

JupyterLab 是笔记本、终端、文件树和扩展的集成界面,适合数据分析、实验记录和教学演示。单元格可混写代码与说明,输出内嵌图表,内核可切换不同 Python 或语言环境。

协作时要注意内核状态不可复现:先跑过的变量会让后来者误以为脚本可从头执行。提交仓库前 Restart Kernel and Run All,并把依赖锁进环境文件。

生产化路径是把稳定笔记本抽成模块和流水线,而不是把 Lab 直接当服务。权限、资源配额和令牌泄漏是共享服务器上的常见风险。

三、Node

nodejs

Node.js 把 JavaScript 从浏览器带到服务端,核心是事件循环加非阻塞 I/O。单线程处理网络请求,把磁盘、数据库和外部 HTTP 交给底层线程池,因此特别适合 I/O 密集的 API 网关、实时推送和工具链。

生态以 npm 为中心,Express、Fastify、Nest 覆盖从微框架到企业分层。版本升级时要盯 LTS 节奏、OpenSSL 绑定以及原生模块的 ABI 变化,否则生产环境会出现难以复现的崩溃。

实践中把 CPU 密集任务拆到 Worker Threads 或独立服务,用 PM2 或容器编排做进程守护。监控事件循环延迟比只看 CPU 百分比更能提前发现阻塞。

bunjs

Bun 是用 Zig 实现的高性能 JavaScript 运行时,把运行时、包管理器和打包器收进同一条命令行。安装依赖用 bun install,跑测试用 bun test,产物构建用 bun build,冷启动通常比 Node 进程更短。

它默认拥抱 Web 标准 API,例如 fetch、WebSocket 与 Worker,同时兼容大部分 npm 包。真正卡住迁移的往往是原生 addon、某些 Node 内部模块,以及路径、环境变量在 Windows 上的细微差异。

新脚手架、本地脚本和边缘函数很适合先试 Bun;存量服务则应先用集成测试锁住关键路径,再按流量灰度切换,避免一次性替换运行时带来的隐性回归。

四、托管与鉴权

Tencent CloudBase

腾讯云 CloudBase 提供云函数、数据库、存储和静态托管,面向小程序和 Web 快速搭后端。开发者用客户端 SDK 直接调云资源,按量计费,省去自己保节点的前期成本。

安全规则和身份登录要一起设计,默认开通并不等于可公开写库。云函数冷启动、超时和并发限额会影响高峰体验,长任务应拆或改异步。

和自建对比,它换来的是集成速度和腾讯云生态,代价是厂商绑定与调试深度。核心表结构和导出路径要提前想清楚,避免数据出不去。

Sa-Token

Sa-Token 是国产轻量权限框架,登录后发 token,注解做鉴权与角色。支持 Redis 共享会话、踢人下线、同端互斥。和 Spring Boot 集成改 application.yml 即可。

比 Spring Security 上手快,适合中小后台。要注意 token 存储、续期与 CSRF。前后端分离用 Authorization 头。路由拦截与注解可并行。

生产务必 HTTPS、密钥轮换、禁止前端存永久 token。多租户要隔离 loginId。和 OAuth2/OIDC 对接时别重复造会话。审计登录失败次数防爆破。