首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >十五天Python系统学习教程第五天

十五天Python系统学习教程第五天

作者头像
紫风
发布2025-10-14 18:02:51
发布2025-10-14 18:02:51
1200
举报
📅 Day 5 详细学习计划:Python软件包管理与虚拟环境

学习目标 ✅ 掌握Python包管理工具(pip)核心用法 ✅ 熟练使用虚拟环境(venv)隔离项目依赖 ✅ 对比Python与Java(Maven/Gradle)的依赖管理差异 ✅ 完成项目依赖管理与打包实战


一、Python包管理机制深度解析(1小时)
1.1 pip工具核心功能(对比Java的Maven)

功能

pip命令

Maven命令

安装包

pip install requests

mvn dependency:get

卸载包

pip uninstall requests

手动删除pom.xml依赖

列出已安装包

pip list

mvn dependency:list

搜索包

pip search "http client"

通过中央仓库网站搜索

冻结依赖版本

pip freeze > requirements.txt

mvn versions:display-dependency-updates


1.2 虚拟环境(venv)原理

创建与激活

代码语言:javascript
复制
# 创建虚拟环境(对比Java无直接对应机制)  
python -m venv myenv  

# 激活环境  
# Windows:  
myenv\Scripts\activate.bat  
# Unix/macOS:  
source myenv/bin/activate  

文件结构解析

代码语言:javascript
复制
myenv/  
├── bin/            # 可执行文件(python, pip等)  
├── include/        # C头文件  
└── lib/            # 安装的第三方包  
代码语言:javascript
复制

二、依赖管理实战(1小时)
2.1 典型工作流程

初始化项目

代码语言:javascript
复制
mkdir my_project && cd my_project  
python -m venv .venv  
source .venv/bin/activate  

安装依赖

代码语言:javascript
复制
pip install requests==2.28.1  # 指定精确版本  
pip install "flask>=2.0,<3.0" # 版本范围  

生成依赖清单

代码语言:javascript
复制
pip freeze > requirements.txt  

复现环境

代码语言:javascript
复制
pip install -r requirements.txt  

2.2 高级依赖管理工具

工具

特点

Java近似工具

pip-tools

生成精确版本锁文件

Maven版本锁

poetry

全生命周期管理(类似Gradle)

Gradle

conda

跨平台科学计算环境

SDKMAN

poetry示例

代码语言:javascript
复制
# pyproject.toml(对比pom.xml)  
[tool.poetry]  
name = "myapp"  
version = "0.1.0"  

[tool.poetry.dependencies]  
python = "^3.8"  
requests = { version = "^2.28", extras = ["security"] }  

[build-system]  
requires = ["poetry-core>=1.0.0"]  
build-backend = "poetry.core.masonry.api"  

三、打包与分发项目(1小时)
3.1 标准打包流程

项目结构

代码语言:javascript
复制
my_package/  
├── setup.py  
├── pyproject.toml  
└── my_package/  
    └── __init__.py  
代码语言:javascript
复制

setup.py示例

代码语言:javascript
复制
from setuptools import setup, find_packages  

setup(  
    name="my_package",  
    version="0.1",  
    packages=find_packages(),  
    install_requires=["requests"],  
    entry_points={  
        'console_scripts': [  
            'mycli=my_package.cli:main'  
        ]  
    }  
)  

构建与上传

代码语言:javascript
复制
# 生成分发包(对比mvn package)  
python -m build  

# 上传到PyPI(类似Maven Central)  
twine upload dist/*  

3.2 现代打包标准(PEP 621)
代码语言:javascript
复制
# pyproject.toml  
[project]  
name = "my_package"  
version = "0.1.0"  
dependencies = ["requests>=2.28"]  

[project.scripts]  
mycli = "my_package.cli:main"  

四、实战项目:API客户端开发(1小时)
4.1 项目需求
  • 开发一个GitHub API客户端
  • 功能:获取用户仓库列表
  • 依赖:requests
  • 打包为可安装模块
4.2 分步实现

步骤1:初始化环境

代码语言:javascript
复制
mkdir github_client && cd github_client  
python -m venv .venv  
source .venv/bin/activate  

步骤2:安装依赖

代码语言:javascript
复制
pip install requests  
pip freeze > requirements.txt  

步骤3:编写代码

代码语言:javascript
复制
# github_client/client.py  
import requests  

class GitHubClient:  
    def __init__(self, token=None):  
        self.base_url = "https://api.github.com"  
        self.headers = {"Authorization": f"Bearer {token}"} if token else {}  

    def get_user_repos(self, username):  
        url = f"{self.base_url}/users/{username}/repos"  
        response = requests.get(url, headers=self.headers)  
        response.raise_for_status()  
        return response.json()  

步骤4:打包配置

代码语言:javascript
复制
# pyproject.toml  
[project]  
name = "github_client"  
version = "0.1.0"  
dependencies = ["requests>=2.28"]  

步骤5:安装测试

代码语言:javascript
复制
pip install .  
python -c "from github_client import GitHubClient; print(GitHubClient().get_user_repos('torvalds'))"  

五、Java开发者注意事项

依赖范围差异

  • Python无provided作用域,通过extras实现可选依赖
代码语言:javascript
复制
[project.optional-dependencies]  
dev = ["pytest", "black"]  

多模块管理

  • Python通过namespace packages实现,需在__init__.py中声明
代码语言:javascript
复制
__path__ = __import__('pkgutil').extend_path(__path__, __name__)  

依赖冲突解决

  • 使用pipdeptree分析依赖树
代码语言:javascript
复制
pip install pipdeptree  
pipdeptree --warn silence  
代码语言:javascript
复制

六、扩展练习

依赖安全审计

代码语言:javascript
复制
pip install safety  
safety check -r requirements.txt  

私有仓库配置

代码语言:javascript
复制
# ~/.pip/pip.conf  
[global]  
extra-index-url = https://private.pypi.com/simple  

Docker集成

代码语言:javascript
复制
FROM python:3.10-slim  
COPY requirements.txt .  
RUN pip install -r requirements.txt  
COPY . .  
CMD ["python", "main.py"]  

通过第五天的学习,您将掌握Python生态的依赖管理精髓,关键要点: 1️⃣ 虚拟环境是项目隔离的必备工具 2️⃣ requirements.txt是最基础的依赖管理方式,但pyproject.toml是未来趋势 3️⃣ 打包分发机制与Java有显著差异,需重点理解setup.py__init__.py的作用

本篇的分享就到这里了,感谢观看,如果对你有帮助,别忘了点赞+收藏+关注。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📅 Day 5 详细学习计划:Python软件包管理与虚拟环境
  • 一、Python包管理机制深度解析(1小时)
    • 1.1 pip工具核心功能(对比Java的Maven)
    • 1.2 虚拟环境(venv)原理
  • 二、依赖管理实战(1小时)
    • 2.1 典型工作流程
    • 2.2 高级依赖管理工具
  • 三、打包与分发项目(1小时)
    • 3.1 标准打包流程
    • 3.2 现代打包标准(PEP 621)
  • 四、实战项目:API客户端开发(1小时)
    • 4.1 项目需求
    • 4.2 分步实现
  • 五、Java开发者注意事项
  • 六、扩展练习
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档