BWH Compass

Python 环境隔离与代码检查

项目依赖应放在虚拟环境中,避免替换发行版自带的 Python。系统工具可能依赖系统解释器,强行升级会影响包管理。

BWH Compass 编辑整理更新于 约 4 分钟阅读

1. 保留系统 Python,给项目单独建环境#

Linux 的包管理器和系统工具可能依赖自带 Python。不要把 /usr/bin/python3 替换成网上下载的版本,也不要用 sudo pip install 把应用依赖混进系统环境。一个项目一个虚拟环境,升级和删除都更清楚。

bash
python3 --version
command -v python3
cat /etc/os-release

项目若要求特定版本,先核对官方支持,再使用发行版支持的包、独立安装路径或容器。虚拟环境隔离依赖,但不等同于安全沙箱。

2. 创建虚拟环境并确认解释器#

Ubuntu/Debian 可先安装发行版提供的 venv 组件。下面在普通用户目录创建示例项目,目录名可调整。

bash
sudo apt update
sudo apt install python3-venv
mkdir -p "$HOME/my-python-app"
cd "$HOME/my-python-app"
python3 -m venv .venv
source .venv/bin/activate
python -c 'import sys; print(sys.executable)'
python -m pip --version

解释器路径应指向当前项目的 .venv。看到 externally-managed-environment 时,优先检查是否忘记进入虚拟环境,不要直接使用破坏系统包保护的选项。

3. 安装项目依赖并锁定版本#

已有项目先阅读 pyproject.toml、requirements.txt 与锁文件,使用项目指定工具。普通 requirements 项目可运行:

bash
python -m pip install -r requirements.txt
python -m pip check

文件不存在时先建立自己的依赖清单,不要复制别人的完整环境。只从受信任来源安装包,核对名称,防止装错同名或拼写相近包。版本锁定帮助重现环境,但仍需定期更新安全补丁。

4. 用 Pylint 找问题,再运行实际测试#

bash
python -m pip install pylint
python -m pylint app.py
python -m compileall -q app.py

把 app.py 换成自己的文件。Pylint 的命名、风格和静态分析提示需要结合项目判断,不能为了分数把所有提示关闭。compileall 能发现部分语法错误,但不能证明数据库、网络和业务逻辑正确。

涉及网络调用时配置超时和错误处理,API Key 从受限环境配置读取,不写进脚本和日志。调试完成再运行项目自己的测试或一条真实但低影响的业务流程。

5. 长期运行使用明确路径#

systemd 中的 ExecStart 指向 /实际/项目/.venv/bin/python,WorkingDirectory 指向项目目录,使用普通服务用户。不要依赖交互 shell 中的 source activate,定时任务和服务不会自动继承你的终端环境。

Conda 适合需要它管理复杂科学计算依赖的项目;创建独立环境并记录配置即可,不必为了一个简单脚本安装整套大型发行版。虚拟环境通常重建比跨机器复制更可靠。

部署方法见后台服务,依赖升级后再检查启动、日志与实际产物。

完成后检查

退出再重新激活环境,确认程序使用的解释器与 pip 属于同一环境。

官方资料与相关入口