Python 项目环境配置完全指南

一、虚拟环境(Virtual Environment)

为什么需要虚拟环境? Python 项目的依赖如果全部装到全局环境,会导致版本冲突、环境污染、可移植性差。每个项目应该独立维护自己的依赖环境。

创建与使用步骤 在项目根目录执行:

code

复制代码
python3 -m venv venv

macOS / Linux 激活:

code

复制代码
source venv/bin/activate

Windows 激活:

code

复制代码
venv\Scripts\activate

激活成功后,终端前面会出现 (venv) 标识。这时候再执行 pip install,只会装在虚拟环境内部,不会影响全局 Python。

依赖管理 安装依赖:

code

复制代码
pip install -r requirements.txt

导出依赖(分享用):

code

复制代码
pip freeze > requirements.txt

退出与清理

code

复制代码
deactivate          # 退出虚拟环境
rm -rf venv/        # 彻底删除虚拟环境

最佳实践

  • 必须将 venv/ 目录加入 .gitignore,避免提交到版本控制
  • 每次开发前确认虚拟环境已激活
  • 项目 README 里要写清楚虚拟环境创建步骤

二、环境变量与敏感信息管理(.env)

核心原则:代码与配置分离 不要把 API Key、数据库密码等敏感信息硬编码到源代码里,应该用环境变量或 .env 文件管理。

.env 文件的作用 存放真实敏感配置,例如:

code

复制代码
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
DATABASE_URL=postgresql://user:pass@localhost/db
DEBUG=True

特点:

  • 本地运行时被程序读取(如通过 python-dotenv 库)

  • 绝不能提交到 Git 仓库,防止泄露

  • 必须在 .gitignore 中显式忽略:

    .env

.env.example 文件的作用 作为配置模板提交到仓库,告诉协作者需要填写哪些变量:

code

复制代码
# .env.example
OPENAI_API_KEY=your_api_key_here
DATABASE_URL=your_database_url_here
DEBUG=False

特点:

  • 需要提交到 Git(仓库中保留此文件)
  • 不包含真实值,只展示变量名和格式
  • 新成员复制为 .env 后填入自己的真实值即可使用

常见误区

误区 1:.gitignore 会隐藏文件,让文件夹里看不到 .env 真相:.gitignore 只控制 Git 是否追踪,文件仍物理存在于本地,IDE 文件树里依然能看到。

误区 2:.env 和 .env.example 重复了,删掉一个 真相:两者作用完全不同,缺一不可。

误区 3:把 .env 提交到仓库方便部署 真相:敏感信息泄露风险极高,应使用服务器环境变量或密钥管理服务。

代码中读取方式 先安装 python-dotenv:

code

复制代码
pip install python-dotenv

然后:

code

复制代码
from dotenv import load_dotenv
import os

load_dotenv()  # 加载 .env 文件

api_key = os.getenv("OPENAI_API_KEY")

三、.gitignore 详解

作用范围 .gitignore 只影响 Git 版本控制,不影响文件系统。被忽略的文件:

  • 不会出现在 git status 中
  • 不会被 git add 默认选中
  • 不会推送到远程仓库

但文件仍然:

  • 存在于你的本地磁盘
  • 出现在 IDE 文件树中(除非额外配置 IDE 排除规则)

Python 项目常用 .gitignore 配置:

code

复制代码
.env
venv/
env/
__pycache__/
*.pyc
*.pyo
*.pyd
.idea/
.vscode/
.DS_Store
Thumbs.db

查看已忽略文件 确认某个文件是否被忽略:

code

复制代码
git check-ignore -v .env

已提交到仓库的敏感文件如何补救 如果误将 .env 提交到了 Git:

code

复制代码
git rm --cached .env
echo ".env" >> .gitignore
git commit -m "remove .env from tracking"

注意:如果仓库是公开的,密钥已经泄露,必须立即撤销并更换该密钥。


四、pip 版本管理

是否需要及时更新 pip? pip 更新通常包含安全修复、Bug 修复和性能优化,建议定期更新,但不是紧急必须。

更新方式(在虚拟环境中):

code

复制代码
source venv/bin/activate
python3 -m pip install --upgrade pip

版本回退:

code

复制代码
python3 -m pip install pip==26.1.1

建议频率:每 1-2 个月更新一次,或在遇到安装依赖报错时优先尝试更新。


五、项目结构示例

一个规范的 Python 项目结构:

code

复制代码
gradio-demo/
├── .env                  # 本地敏感配置(Git 忽略)
├── .env.example          # 配置模板(提交仓库)
├── .gitignore            # Git 忽略规则
├── README.md             # 项目说明(包含虚拟环境步骤)
├── requirements.txt      # 依赖列表
├── app.py                # 主程序
└── venv/                 # 虚拟环境目录(Git 忽略)

六、快速检查清单

提交代码前,确认以下事项:

venv/ 已加入 .gitignore .env 已加入 .gitignore .env.example 已创建并提交(不含真实值) README.md 包含虚拟环境创建和激活步骤 requirements.txt 是最新的依赖列表 没有敏感信息硬编码在源码中 没有将 .pyc 或 pycache/ 提交到仓库


总结

虚拟环境:隔离项目依赖,避免全局污染。 .env:存放真实密钥,绝不上传 Git。 .env.example:配置模板,方便协作者知道要填什么。 .gitignore:告诉 Git 哪些文件不追踪,但文件仍存在于本地。 pip 更新:定期执行,保持包管理器健康。