前言
刚入门Python
,看到PyCharm
的环境管理选择有好几个选择,分别是virtualenv
、pipenv
、venv
、conda
,只知道这些都可以用来管理Python
环境的,但不知道这些环境有什么区别,所以,本文将对这些环境管理进行总结。
virtualenv
除非你还在使用python 2
,否则不推荐。
venv
python
自带的虚拟环境管理,简单是它的优势,也是它的劣势。
- 只能创建虚拟环境,不能指定系统不存在的
python
环境版本,不能管理系统中的环境列表(例如选择一个已经创建好了的虚拟环境)。 venv
的虚拟环境默认是存放在项目文件夹里的,这会影响项目文件的管理。
pipenv
requests
库作者Kenneth Reitz
大神的作品。但pipenv
并不稳定,例如,如果你运行pip install ...
两次,结果可能不一样,pipenv
曾承诺解决这个问题,但实际上,它只是多次尝试运行pip install <单个包>
,直到结果看起来差不多符合规范。显然,这样的方式更慢,但最终问题依然存在。
anaconda / conda
如果是科学计算的新手,推荐使用,但:
anaconda
实在过于臃肿,它的安装包里包括了众多科学计算会用到的packages,安装后动辄5-6个G。anaconda
有个不包含packages
的版本,叫miniconda
,但miniconda
仍然存在安装依赖库过于激进的问题,安装同样的packages
,conda
总会比别的包管理器安装更多的"依赖包",即便有的"依赖包"并不是必须,这会导致你的项目出现不必要的膨胀。- 同时,
conda
的packages
列表conda list
还存在和pip list不一致的问题。
- 同时,
poetry
唯一的真神。poetry
没有上述缺点,同时轻便强大。
poetry
使用pyproject.toml
和poetry.lock
文件来管理依赖,类似于JavaScript/Node.js
的Npm
和Rust
的Cargo
,这俩都是非常成熟好用的依赖管理方案。poetry
本身并不具有管理Python
解释器的功能,推荐和pyenv
/pyenv-win
使用,可以轻松下载和设置不同版本的Python
解释器。poetry
的缺点可能是较为复杂,上手困难。由于poetry
严格的依赖管理策略,你可能会在安装依赖包时遇到更多的问题。- 在国内,
poetry
还有另一个缺点,无法设置全局镜像源,只可针对单个项目设置镜像源。
pip
你应该仅使用pip
来安装poetry
,就像IE
的唯一用途是下载Chrome
。