作为 Python 开发者,当前大部分的 Python 包管理器也同时管理虚拟环境,这主要是为了隔离项目的开发环境。
虚拟环境已经成为 Python 开发中必不可少的部分,但同时它也创造了进入障碍。
以下是它的部分问题:
以下是 PDM 的特点:
PDM 使用起来非常轻松,接下来让我们尝试一下。
PDM 自身的安装需要 Python >= 3.7,但它并不限制项目使用的 Python 版本。
PDM的包管理
官方推荐用 pipx 安装 pdm :
> pipx install pdm
接下来让我们来创建一个 Django 项目的隔离环境。
首先创建并进入项目路径:
> mkdir pdm-django> cd pdm-django
在此路径中初始化 PDM :
> pdm init
初始化时会询问此项目使用的 Python 版本,笔者选了 Python 3.6.8 。
完成后就可以正式开始使用 PDM 了,比如:
> pdm run python -VPython 3.6.8
用 pdm run 执行此环境下的脚本或可执行程序。
接下来安装 django:
> pdm add django
等待一会儿后,django 就安装完成了。
让我们试试把 django 的开发服务器给运行起来:
# 创建django项目> pdm run django-admin startproject blog# 进入manage.py所在路径> cd blog# 运行django服务器> pdm run python manage.py runserver
Django 项目就顺利运行起来了。用浏览器访问 http://127.0.0.1:8000/ ,看到了熟悉的小火箭页面。
这整个过程是完全未创建虚拟环境的。
查看当前 PDM 管理的包:
> pdm listPackage Version----------------- -------asgiref 3.3.4django 3.2pytz 2021.1sqlparse 0.4.1typing-extensions 3.7.4.3
看不到任何全局中的包,非常的干净。
多项目环境
上面的例子演示了一下 PDM 管理的环境和全局环境是隔离的。接下来测试一下多个项目之间的环境是否也是隔离的。
在磁盘根路径下创建一个 Flask 的新项目:
# 创建并进入flask项目路径> mkdir pdm-flask> cd pdm-flask# 初始化pdm> pdm init# 安装flask包> pdm add requests flask
项目就创建好了。
查看 Python 解释器版本:
> pdm run python -VPython 3.9.1
初始化时笔者选择了 Python 3.9.1,和前面的 Django 项目做区分。
查看已安装的包:
> pdm listPackage Version------------ ---------certifi 2020.12.5chardet 4.0.0click 7.1.2flask 1.1.2idna 2.10itsdangerous 1.1.0jinja2 2.11.3markupsafe 1.1.1requests 2.25.1urllib3 1.26.4werkzeug 1.0.1
没有 Django 相关的东西,很好。
运行下 Django 的命令试试:
> pdm run django-admin startproject blog[PdmUsageError]: Command 'django-admin' is not found on your PATH.
Django 指令未能运行,说明环境确实是隔离了。
再试试运行 Flask 服务。
在 __pypackages__ 同级的目录下创建 app.py 脚本:
from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello World!'if __name__ == '__main__': app.run()
启动 Flask 服务:
> pdm run python app.py
Flask 服务就顺利运行起来了,完美!
另外,如果你使用的是 Bash,可以通过执行eval $(pdm –pep582)设置环境变量,现在你可以用你最熟悉的 Python 解释器 运行脚本了:
$ python /.../pdm-flask/app.py * Serving Flask app "app" (lazy loading) ... * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
以上就是一个现代化的 Python 包管理器的入门了,感觉如何?
实际上 PDM 的功能远不止这些,有兴趣的读者就自行前往文档了解。
如何做选择
说这么多,让我们回到那个核心问题:是否应该在项目中使用 PDM?
PDM项目 非常年轻且活跃。如果你也是积极的开源项目参与者,那么非常适合参与到此类项目中,甚至成为核心贡献者。
等到项目代码量膨胀且逐渐完善后,参与进来就需要更高的门槛了。
年轻项目的劣势就是版本进化速度非常快,并且容易产生 Bug。另一个潜在问题就是本项目属于先锋实验,其依据的 PEP 582 至今还是草案。
如何选择就根据读者的项目情况来确定了。就笔者的建议而言,你可以先在试验性项目中使用 PDM,若体验舒适,再逐步迁移到正式的项目中来。
PDM创建者
PDM创建者 Frost Ming,Python 开源爱好者,坐标深圳。Pycon 讲师,pipenv 核心贡献者。活跃于各大社交平台,帮助众多 Python 患者解决各类疑难杂症。
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!