新一代Python包管理工具来了
1 简介
说起Python
的包管理工具,大家第一时间想到的肯定是pip
、conda
等经典工具。但最近我发现了一款新颖的Python
包管理工具——pdm
,它受到PEP582
(https://www.python.org/dev/peps/pep-0582/
)以及node
管理库文件方式的启发,帮助我们以本地项目库的形式创建及管理不同的Python
环境。
2 使用pdm管理项目库环境
2.1 pdm的安装
pdm
的安装方式多种多样,这里我们使用官方推荐的方式进行安装:
python -m pip install --user pipx
python -m pipx ensurepath
接着关闭你的终端重开一个新的,继续输入:
pipx install pdm
当出现以下内容时,则代表我们的pdm
已经安装完成了~
2.2 pdm的基础使用
使用pdm
以当前目录作为项目仓库创建项目时,我们需要根据项目实际需要,先切换到对应Python
版本的环境之下,再执行pdm init
来初始化项目,以3.7
为例:
cd C:\Users\pengz\Desktop\当期博客工作台\pdm-demo
conda activate dash-apps
pdm init
初始化项目时,根据自己的实际情况填写每个问题即可:
上述过程之后,你会在当前目录下发现创建好的pyproject.toml
文件,它记录了当前pdm
项目的各项基本参数:
接下来我们可以根据自己项目的实际需要使用pdm add
命令来安装指定的单个或多个第三方Python
库,以flask
为例(其中第一行命令用于设置国内pypi
镜像源):
pdm config pypi.url https://pypi.douban.com/simple/
pdm add -v flask flask-login
完成安装后,我们可以在当前目录下看到__pypackages_
目录,我们前面所安装的库就隔离安装在其下面,类似node
的node_modules
目录:
也与PEP582
所倡导的项目结构相符合:
foo
__pypackages__
3.7
lib
bottle
myscript.py
这样就实现了项目级别的环境隔离效果,且无需创建额外的虚拟环境,要在IDE
中使用pdm
项目下的本地隔离库执行程序很简单,以pycharm
为例,将pdm
项目打开为pycharm
工程之后,找到如图所示位置的lib
文件夹,将其标记为Sources Root
即可,同时记得将解释器选为pdm init
初始化时所在环境相对应的:
与终端中原始环境的执行结果对比,可以发现成功实现了环境隔离,这是因为pdm
项目的__pypackages__
中的包会在环境本身的site-packages
之前被载入,从而更好地隔离包的环境:
如果你想要在其他路径或其他机器上还原某个pdm
项目,则仅需要将pyproject.toml
与pdm.lock
文件拷贝过去,再在对应目录下执行pdm sync -v
命令即可,非常的方便,类似npm install
配合package.json
的功能:
关于pdm
的更多特性你可以前往其官网https://pdm.fming.dev/
了解更多~
以上就是本文的全部内容,欢迎在评论区与我进行讨论。
新一代Python包管理工具来了的更多相关文章
- Python包管理工具小结
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...
- python 包管理工具
python 包管理工具 Python当前的包管理工具链是 easy_install/pip + distribute/setuptools + distutils,显得较为混乱. 而将来的工具链组合 ...
- Python 包管理工具解惑
Python 包管理工具解惑 本文链接:http://zengrong.net/post/2169.htm python packaging 一.困惑 作为一个 Python 初学者,我在包管理上感到 ...
- Python包管理工具和多版本环境管理
1. Python包管理工具 在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_instal ...
- 转载:Python 包管理工具解惑
Python 包管理工具解惑 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供m ...
- Python包管理工具pip的基本使用
1.简介 pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具. 2.pip安装 如果你安装的Python 2 >=2.7.9 或 ...
- python包管理工具他们之间的关系
python包管理工具之间的关系 现在的python包管理工具有很多,非常混乱,必须理清他们之间的关系才能更好的使用python构建强大的包关系系统工具. 首先:python官方推荐的第三方库是PyP ...
- Python | Pipenv官方推荐的python包管理工具
原文地址:https://cloud.tencent.com/developer/article/1355672 Pipenv - 官方推荐的的python包管理工具. Pipenv是一款旨在将所有包 ...
- [转载]Python 包管理工具
[转载]Python 包管理工具 最近由于机缘巧合,使用各种方法安装了一些Python包,所以对Python的包管理开始感兴趣.在网上找到一篇很好的文章:https://blog.zengrong.n ...
随机推荐
- select......for update会锁表还是锁行
select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁. 那么它加的是行锁还是表锁,这就要看是不是用了索引/主键. 没用索 ...
- HTML网页设计中 link 和 @import 的区别
页面中使用CSS的方式主要有3种:行内添加定义style属性值,页面头部内嵌调用和外面链接调用,其中外面引用有两种:link和@import.外部引用CSS两种方式link和@import的方式分别是 ...
- Ranger开源流水线docker化实践案例
1.背景 开发部门决定在Apache Ranger开源社区贡献代码,目标是个人国内排名Top1,世界排名Top2,并且在已经成为Ranger项目的Committer情况下,争取成为Ranger项目的P ...
- MongoDB分片设计
#### 如何做好分片集群 * 合理的架构 * 是否需要分片? * 要分多少片? * 数据分布规则? * 正确的姿势 * 选择需要分片的表 * 选择正确的片键 * 使用合适的均衡策略 * 足够的资源 ...
- 简单通俗讲解 android 内存泄漏
在柠檬班社区看到老师一篇android 内存泄漏写的通俗易懂,绝对是小白能看懂的! 原文:http://www.lemfix.com/topics/2 平常会听到程序员说"内存泄漏" ...
- 基于CentOS7.x gitlab环境搭建,卸载,汉化 --汉化篇
gitlab环境搭建,卸载,汉化--汉化篇 注意gitlab的版本需和汉化版本一致 安装git yum install -y git 下载最新的汉化包 cd git clone https://git ...
- Hive实现网站PV分析
原文链接: https://www.toutiao.com/i6773241257528394248/ 之前我们做过<java mapreduce实现网站PV分析>,这次我们可以用hive ...
- Flowable实战(二)集成Springboot
1.创建Springboot项目 打开IDEA,通过File -> New -> Project- -> Spring Initializr 创建一个新的Springboot项目 ...
- Android中添加监听回调接口的方法
在Android中,我们经常会添加一些监听回调的接口供别的类来回调,比如自定义一个PopupWindow,需要让new这个PopupWindow的Activity来监听PopupWindow中的一些组 ...
- 带你玩转Flink流批一体分布式实时处理引擎
摘要:Apache Flink是为分布式.高性能的流处理应用程序打造的开源流处理框架. 本文分享自华为云社区<[云驻共创]手把手教你玩转Flink流批一体分布式实时处理引擎>,作者: 萌兔 ...