社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

划时代的 Python 包管理工具 -- PDM 原理篇

Python编程时光 • 4 年前 • 608 次点击  

在之前的一篇文章中(来了!划时代的 Python 包管理工具 -- PDM),我详细介绍了 PDM 的保姆级入门用法。


之前一直想着出一篇 PDM 的高级篇,却一直食言,当然更主要的是好像也没人催。
写长一点的文章,需要投入长达几个小时的时间与精力,因此打算以这种小知识点的形式开展下去,写得不会很累,重要的是能保持稳定输出。
今天介绍一下 PEP 582 的原理,说说 PDM 是如何做到本地包目录的支持的?
在 pdm 的环境之下,它是优先从项目里的 __pypackages__  搜索包的(安装时也是如此)

这是如何实现?其实原理非常简单。

使用 -m site,可以查看当前 Python 环境包搜索目录的顺序

从下图可以看到使用 pdm 工具后,无疑就是在全局的 site-packages 目录之前加上项目目录里的 __pypackages__ 路径,使得 __pypackages__ 的搜索优先级高于全局的 Python 环境。

是的,pdm run 命令默默帮你做了两件事:

  1. 在执行命令前,插入 __pypackages__ 目录到 PYTHONPATH 中

  2. 在执行命令后,删除 PYTHONPATH 中的 __pypackages__ 目录

如果你不想每次执行命令都加个 pdm run ,可以直接将该变量设置到当前的环境中,只需要你使用 pdm --pep582 里的 shell 程序来启用 pep582








Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129455