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

📅 Day 5 详细学习计划:Python软件包管理与虚拟环境

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


一、Python包管理机制深度解析(1小时)

1.1 pip工具核心功能(对比Java的Maven)
功能pip命令Maven命令
安装包pip install requestsmvn dependency:get
卸载包pip uninstall requests手动删除pom.xml依赖
列出已安装包pip listmvn dependency:list
搜索包pip search "http client"通过中央仓库网站搜索
冻结依赖版本pip freeze > requirements.txtmvn versions:display-dependency-updates

1.2 虚拟环境(venv)原理

创建与激活

# 创建虚拟环境(对比Java无直接对应机制)  
python -m venv myenv  

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

文件结构解析

myenv/  
├── bin/            # 可执行文件(python, pip等)  
├── include/        # C头文件  
└── lib/            # 安装的第三方包  
 

二、依赖管理实战(1小时)

2.1 典型工作流程
  1. 初始化项目

    mkdir my_project && cd my_project  
    python -m venv .venv  
    source .venv/bin/activate  

  2. 安装依赖

    pip install requests==2.28.1  # 指定精确版本  
    pip install "flask>=2.0,<3.0" # 版本范围  

  3. 生成依赖清单

    pip freeze > requirements.txt  

  4. 复现环境

    pip install -r requirements.txt  


2.2 高级依赖管理工具
工具特点Java近似工具
pip-tools生成精确版本锁文件Maven版本锁
poetry全生命周期管理(类似Gradle)Gradle
conda跨平台科学计算环境SDKMAN

poetry示例

# 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 标准打包流程

项目结构

my_package/  
├── setup.py  
├── pyproject.toml  
└── my_package/  
    └── __init__.py  
 

setup.py示例

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'  
        ]  
    }  
)  

构建与上传

# 生成分发包(对比mvn package)  
python -m build  

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

3.2 现代打包标准(PEP 621)

# 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:初始化环境

mkdir github_client && cd github_client  
python -m venv .venv  
source .venv/bin/activate  

步骤2:安装依赖

pip install requests  
pip freeze > requirements.txt  

步骤3:编写代码

# 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:打包配置

# pyproject.toml  
[project]  
name = "github_client"  
version = "0.1.0"  
dependencies = ["requests>=2.28"]  

步骤5:安装测试

pip install .  
python -c "from github_client import GitHubClient; print(GitHubClient().get_user_repos('torvalds'))"  

五、Java开发者注意事项

  1. 依赖范围差异

    • Python无provided作用域,通过extras实现可选依赖

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

  2. 多模块管理

    • Python通过namespace packages实现,需在__init__.py中声明

    __path__ = __import__('pkgutil').extend_path(__path__, __name__)  

  3. 依赖冲突解决

    • 使用pipdeptree分析依赖树

    pip install pipdeptree  
    pipdeptree --warn silence  
     

六、扩展练习

  1. 依赖安全审计

    pip install safety  
    safety check -r requirements.txt  

  2. 私有仓库配置

    # ~/.pip/pip.conf  
    [global]  
    extra-index-url = https://private.pypi.com/simple  

  3. Docker集成

    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的作用

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值