前两篇分别学习了 Python 如何进行依赖的管理,以及结合虚拟环境来使用pip进行依赖管理。而有人觉得把virtualenv与pip分开来操作太麻烦了,而且requirements.txt描述依赖的方式十分笨拙,所以在前两者之上创建了pipenv, 也谈不上重新发明了轮子吧。3. Pipenv: 新一代依赖管理与虚拟环境
倘若不是经由virtualenv,venv而来到pipenv,没有对比也就无法体会到pipenv的妙处的。pipenv在总结了virtualenv/venv的缺点之后由 Kenneth Reitz 于 2017 年 1 月发布的新型 Python 依赖管理器。- 它不再需要单独用
virtualenv和pip,只要一条命令pipenv完成所有的事 - 不用手动管理
requirements.txt文件,而是由pipenv自动维护Pipfile和Pipfile.lock文件 - 自动创建虚拟环境,并且虚拟环境与项目文件分离
- 更详尽的依赖图(例如
pipenv graph),像mvn dependency:tree那样显示依赖树 - 控制台下输出颜色更丰富
- 它不再需要单独用
原本想在一篇之内覆盖到 Python 的包管理以及各类虚拟环境的应用,没想根本就是一发不可收拾,恐怕两篇都完不了,所以也要进行重构。这里只涉及到 Python 的虚拟环境venv和virtualenv,至于标题的话,也不想再改了,只作一,二,三编号,必要时仍能连缀成长篇。最后一篇将单独学习pipenv的应用。
以下序号也是承接上一篇 Python 包管理及虚拟环境的应用(一)。2. Python 虚拟环境
关于创建 Python 项目的虚拟环境,有三个工具可用,venv,virtualenv, 以及后面单独要学到的pipenvvenv, 即python3 -m venv命令,Python 3.3 及新版本自带了,为 Python 3.4 及以后的版本创建的虚拟环境会有pip和setuptools命令virtualenv需要单独安装,但是它支持 Python 2.7 和 Python 3.3+, 创建的虚拟环境中带有pip,setuptools和wheel命令- 另外,
pyvenv脚本也可用来创建 Python 虚拟环境,不过它自 Python 3.6 不推荐使用,建议用python3 -m venv命令
Read More
话说 Python 的哲学之一就是: 用一种方法,最好是只有一种方法来做一件事。可以用python -m this或在 python 交互界面下import this看到The Zen of Python有一句:There should be one-- and preferably only one --obvious way to do it.
然而 Python 在关于包管理(依赖管理)一事上却让人面临了众多的选择。
即使是 Java 日趋发展庞大的今天,包管理工具也没有如今的 Python 复杂,Java 的包管理工具经历了手工下载 jar 包,Maven, Ant+Ivy, Gradle, sbt, 但主流的也就 Maven 和 Gradle, 并且它们兼具项目构建的功能。
这里有一个 Python 包管理工具变迁的视频: Kenneth Reitz - Pipenv: The Future of Python Dependency Management - PyCon 2018。再更早的 Python 依赖管理的方式不说,视频中提到了 Read More