Python进阶教程:项目工程化与虚拟环境

目录

Python进阶教程:项目工程化与虚拟环境

本文是 Python 入门教程系列 的第 15 篇(扩展篇)。前面学习了语法和库,本篇介绍如何把代码组织成规范、可维护、可分享的工程项目。

一、虚拟环境

不同项目依赖的库版本可能冲突,虚拟环境让每个项目独立隔离依赖:

bash 复制代码
# 创建虚拟环境(Python 3.3+ 内置)
python -m venv myenv

# 激活(Windows)
myenv\Scripts\activate

# 激活(macOS / Linux)
source myenv/bin/activate

# 退出
deactivate

二、依赖管理

2.1 requirements.txt

bash 复制代码
# 导出当前环境依赖
pip freeze > requirements.txt

# 在新环境安装
pip install -r requirements.txt

2.2 依赖分组(生产/开发)

text 复制代码
# requirements.txt(生产依赖)
flask==3.0.0
requests==2.31.0

# requirements-dev.txt(开发依赖)
-r requirements.txt
pytest==8.0.0
black==24.1.0
flake8==7.0.0

三、项目目录结构

text 复制代码
my_project/
├── README.md            # 项目说明
├── requirements.txt     # 依赖清单
├── .gitignore           # Git 忽略规则
├── setup.py / pyproject.toml  # 打包配置
├── src/
│   └── my_package/
│       ├── __init__.py
│       ├── main.py
│       ├── utils.py
│       └── models.py
├── tests/               # 测试目录
│   ├── __init__.py
│   ├── test_utils.py
│   └── test_models.py
├── docs/                # 文档
└── scripts/             # 辅助脚本

四、.gitignore 必备规则

text 复制代码
# Python 缓存与构建
__pycache__/
*.py[cod]
build/
dist/
*.egg-info/

# 虚拟环境
venv/
myenv/
.venv/

# 测试与覆盖率
.pytest_cache/
.coverage
htmlcov/

# IDE 与系统
.vscode/
.idea/
.DS_Store

# 敏感信息
.env
*.env

五、包管理进阶:pip 与 pipenv

bash 复制代码
# 查看已安装包
pip list

# 查看包信息
pip show requests

# 更新包
pip install --upgrade requests

# 卸载
pip uninstall requests

六、使用第三方工具提升效率

6.1 pyproject.toml 现代配置

toml 复制代码
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my-project"
version = "0.1.0"
description = "一个示例项目"
requires-python = ">=3.9"
dependencies = [
    "flask>=3.0",
    "requests>=2.31",
]

[project.optional-dependencies]
dev = ["pytest", "black", "flake8"]

6.2 一键脚本

python 复制代码
# scripts/setup.sh / setup.bat
# 一键创建虚拟环境并安装依赖

# Windows (setup.bat)
python -m venv myenv
call myenv\Scripts\activate.bat
pip install -r requirements.txt
echo 环境配置完成!

七、实战:搭建一个规范的项目

text 复制代码
# 步骤 1:创建目录结构
project_root/
├── requirements.txt
├── .gitignore
└── src/
    └── hello_cli/
        ├── __init__.py
        └── main.py

# 步骤 2:编写代码(src/hello_cli/main.py)
def main():
    print("Hello, Project!")

if __name__ == "__main__":
    main()

# 步骤 3:初始化 Git 并提交
git init
git add .
git commit -m "init project"

项目初始化清单

  • 创建虚拟环境
  • 编写 requirements.txt
  • 编写 .gitignore
  • 建立 src / tests / docs 目录
  • 初始化 Git 仓库
  • 编写 README.md
  • 首次提交代码

总结

本篇介绍了虚拟环境、依赖管理、项目目录结构、.gitignore 规范等工程化基础。良好的工程习惯能让项目更易维护、协作和部署。下一篇将介绍自动化办公,用 Python 解放重复劳动。

相关推荐
知识分享小能手28 分钟前
C++ 学习教程,从入门到精通,C++ 友元、异常和其他特性 — 详细知识点(15)
开发语言·c++·学习
ebiobiz1 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu
朝朝辞暮i1 小时前
C++ 第 26 课:对象、指针与 ->
java·开发语言·c++
慢云智慧空间1 小时前
从智能终端到空间AI,慢云科技如何重新定义智慧建筑的核心能力?
人工智能·python·科技
2601_962885721 小时前
如何用 Python 做股价历史分位选股?(筛出处于历史低位的股票)
开发语言·python
倔强的石头1062 小时前
【Linux指南】动静态库系列(十一):PLT 与延迟绑定:第一次调用动态库函数时发生了什么
linux·人工智能·python
梦帮科技2 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
殷色玫瑰2 小时前
C++入门基础复习:从命名空间到引用与nullptr,一篇重新捡回C++基础
java·开发语言·c++
(Charon)2 小时前
【C++面试】手写线程池:任务队列、工作线程与优雅退出
开发语言·c++
言乐62 小时前
Python概括后端原理
开发语言·python·django·virtualenv·pygame