- 一年半以前写了关于 Python 包管理及虚拟环境系列
其中历数了virtualenv,python3 -m venv,pipenv, 并提到了 pyenv 和 conda。但对 pyenv 和 conda 未作介绍,其中 conda 似乎不该错过。 Anaconda 着力于为数据分析提供支撑,并与 Jupyter Notebook 有更完美的结合,而且 PyCharm 中对它也有很好支持。因此本文来了解一下 conda 以及 Anaconda。
首先 Anaconda 是什么,它是一个用于科学计算的,跨平台的包管理与 Python 环境的工具,它方便的解决了多版本 Python 并存,切换及第三方包安装的问题。所以 Anaconda 不只是像venv,pipenv那样的创建管理 Python 虚拟环境,还承担了系统软件的安装管理,像 Mac 下的brew那样的功能。一般来说我们没有必要安装 Anaconda, 只需要安装 Miniconda 获得conda这个命令行工具即可。 Read More
前两篇分别学习了 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