17370845950

Python 环境与项目目录结构设计
使用虚拟环境隔离项目依赖,推荐venv或conda;创建标准目录结构,明确代码、测试与配置分离;通过requirements.txt管理直接依赖,结合python-dotenv加载环境变量,确保配置安全灵活。

明确环境与项目分离

Python 开发中,隔离全局环境和项目环境是第一步。系统自带的 Python 环境应避免直接安装第三方包,防止依赖冲突。每个项目使用独立的虚拟环境,确保依赖清晰、可复现。

常用工具包括 venv(Python 3.3+ 内置)和 conda(适合数据科学场景)。创建虚拟环境示例:

  • python -m venv venv —— 在项目根目录下创建名为 venv 的环境
  • source venv/bin/activate(Linux/macOS)或 venv\Scripts\activate(Windows)激活环境
  • 激活后,用 pip install 安装的包仅作用于当前项目

推荐将 venv/ 加入 .gitignore,避免提交到版本控制。

标准项目目录结构

一个清晰的目录结构有助于团队协作和后期维护。以下是通用的 Python 项目布局:

my_project/
│
├── my_project/               # 主代码包(可导入模块)
│   ├── __init__.py
│   ├── main.py               # 入口文件
│   ├── utils.py              # 工具函数
│   └── services/             # 业务逻辑模块
│       ├── __init__.py
│       └── api_client.py
│
├── tests/                    # 单元测试
│   ├── __init__.py
│   └── test_utils.py
│
├── scripts/                  # 部署或辅助脚本
│   └── deploy.sh
│
├── requirements.txt          # 生产依赖
├── requirements-dev.txt      # 开发依赖(含测试、格式化工具)
├── .gitignore                # 忽略临时文件和环境
├── README.md                 # 项目说明
└── pyproject.toml            # 或 setup.py,用于打包和元信息

这种结构便于使用 pytest 发现测试,也支持通过 python -m my_project.main 运行主程序。

依赖管理建议

不要只用 pip freeze > requirements.txt,这会包含所有嵌套依赖,不利于维护。

  • 手动编写 requirements.txt,只列出直接依赖,如:requests==2.31.0
  • 使用 pip install -r requirements-dev.txt 安装开发所需工具
  • 考虑使用 pip-toolspoetry 实现更精细的依赖锁定

若项目未来可能发布到 PyPI,建议使用 pyproject.toml 替代 setup.py,符合现代 Python 打包标准。

配置与环境变量

避免在代码中硬编码 API 密钥或数据库地址。使用 python-dotenv 加载环境变量:

  • 项目根目录添加 .env 文件(加入 .gitignore)
  • 代码中通过 os.getenv("API_KEY") 获取配置
  • 不同环境(开发、生产)可使用不同的 .env 文件,如 .env.dev、.env.prod

这样既安全又灵活,部署时可通过系统环境变量覆盖。

基本上就这些,结构清晰、环境隔离、依赖可控,是可维护项目的基石。