requirements.txt要被抛弃了?

Python客栈

共 6119字,需浏览 13分钟

 ·

2024-06-24 17:00

Python客栈设为“星标
第一时间收到最新资讯

本文经授权转载微信公众号:麦叔编程

最近又到某Python项目摸了一把鱼,项目架构需求啥的没记住,就记住了他们部署依赖的时候不用pip3 install -r requirements.txt而是用一个pdm命令进行依赖部署。

原来咱也没用过这个命令,所以就又被“学习”了一把。

1什么是PDM?

PDM (Python Development Master) 是一个现代的Python包管理器和构建工具,类似于传统的 pipsetuptools,但有其独特的功能和优点。

PDM 直接支持 PEP 582(Python Local Packages Directory),这意味着它可以将依赖项安装在项目目录下的 pypackages 文件夹中,而不是全局或虚拟环境中。这种方式可以避免包版本冲突,并简化依赖管理。

2PDM的安装和基本使用

我假装创建一个爬虫项目,爬虫项目里requests模块肯定不能少!!

安装PDM

pip install pdm

创建目录

mkdir spider # 创建项目目录
cd spider # 进入项目目录

初始化项目PDM环境

这个步骤和初始化git仓库非常类似:

pdm init

如果你的本地有个Python环境,它会让你选择一个作为base:

 0. cpython@3.11 (E:\anaconda3\python.EXE)
 1. cpython@3.11 (D:\Python311\python.exe)
Please select (0):

选择完解释器环境的base之后,还需要填一些“项目”相关的信息(不想填的就一路回车下去):

Virtualenv is created successfully at D:\spider\.venv
Project name (spider):
Project version (0.1.0): 0.0.1
Do you want to build this project for distribution(such as wheel)?
If yes, it will be installed by default when running `pdm install`. [y/n] (n):
License(SPDX name) (MIT):
Author name (Kevin):
Author email (xxxx@qq.com):
Python requires('*' to allow any) (==3.11.*):
Project is initialized successfully

安装模块

我们这个项目只拿requests模块作为演示。

在上面创建PDM环境下,执行命令对requests模块进行安装:

pdm add requests

安装命令执行:

Adding packages to default dependencies: requests
  Lock successful
Changes are written to pyproject.toml.
Synchronizing working set with resolved packages: 5 to add, 0 to update, 0 to remove

  v Install certifi 2024.6.2 successful
  v Install requests 2.32.3 successful
  v Install charset-normalizer 3.3.2 successful
  v Install idna 3.7 successful
  v Install urllib3 2.2.1 successful

  All complete!

查看包

pdm list

删除包

pdm remove <package>

更新包

pdm update <package> # 更新某个包
pdm update # 更新所有包

从上面的命令中,我们能很清楚地知道安装requests模块所需要的其他依赖。

执行代码

在项目目录下创建一个clawer.py文件,写入以下内容:

import requests

response = requests.get('https://httpbin.org/get')
print(response.json())

然后用以下命令运行:

pdm run python clawer.py

得到请求的响应内容:

{'args': {}, 'headers': {'Accept''*/*''Accept-Encoding''gzip, deflate''Host''httpbin.org''User-Agent''python-requests/2.32.3''X-Amzn-Trace-Id''Root=1-667037fc-61e6856f6c44472524e6ff39'}, 'origin''62.244.90.31''url''https://httpbin.org/get'}

部署到其他环境

一般情况,我们需要把本地的依赖导出一份requirements.txt,然后在其他环境使用pip install -r requirements.txt对依赖进行安装。

在PDM环境中,是由pyproject.toml管理依赖。

我又创建了一个项目new_spider,并放入代码文件clawer.py

D:\new_spider>ls
clawer.py  pyproject.toml

通过已有pyproject.toml构建新的运行环境:

D:\new_spider>pdm init
pyproject.toml already exists, update it now.
Please enter the Python interpreter to use
 0. cpython@3.11 (E:\anaconda3\python.EXE)
 1. cpython@3.11 (D:\Python311\python.exe)
Please select (0):
Project name (new_spider):
Project version (0.1.0):
Do you want to build this project for distribution(such as wheel)?
If yes, it will be installed by default when running `pdm install`. [y/n] (n):
License(SPDX name) (MIT):
Author name (Kevin):
Author email (xxxx@qq.commkdir):
Python requires('*' to allow any) (==3.11.*):
Project is initialized successfully



D:\new_spider>pdm install
WARNING: Lockfile does not exist
Updating the lock file...
  Lock successful
Changes are written to pdm.lock.
Synchronizing working set with resolved packages: 0 to add, 4 to update, 0 to remove

  v Update certifi 2024.2.2 -> 2024.6.2 successful
  v Update requests 2.31.0 -> 2.32.3 successful
  v Update charset-normalizer 2.0.4 -> 3.3.2 successful
  v Update urllib3 1.26.18 -> 2.2.2 successful

  All complete!


D:\new_spider>pdm run python clawer.py
{'args': {}, 'headers': {'Accept''*/*''Accept-Encoding''gzip, deflate, br, zstd''Host''httpbin.org''User-Agent''python-requests/2.32.3''X-Amzn-Trace-Id''Root=1-66703d39-428dfc987a65bf524bb0149e'}, 'origin''62.254.90.31''url''https://httpbin.org/get'}

部署运行成功!

3最后

PDM是旨在现代化和简化Python项目依赖管理和构建的工具和标准。PDM通过支持PEP-582 和使用pyproject.toml,提供了一种简洁、高效的依赖管理方式,特别适合需要减少环境冲突和简化项目配置的开发者。

pyproject.toml作为一个统一的配置文件,正在成为Python生态系统的标准,使得项目配置和依赖声明更加一致和便捷。

缺点:有学习成本,操作略微繁琐!人生苦短,我用docker!


往期回顾

1、Windows核弹级漏洞,Win7-Win11全部沦陷!
2、神奇的代码注释,看着看着就哭了!
3、现在的年轻人已经不再尊重电脑了。
4、实测 20 款国民 APP !小用半天,体积暴增 865%
5、未来可能消失的编程语言
       


点击关注公众号,阅读更多精彩内容

浏览 117
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报