Python的项目管理需要虚拟环境来得到更好的管理。因为Python的生态环境很有活力,第三方包很多,版本也很多,不同的版本之间存在着很大差异,很多时候我们需要在一台电脑上使用不同版本开发程序,所以虚拟环境可以帮助我们实现这个需求。比如我在电脑上想同时开发两个版本的django程序,那么就可以创建A和B两个虚拟环境,分别在虚拟环境A、B中安装2.x和较新的3.x版本,再进行开发,这样就不会互相影响,并且也不会影响我自己电脑的Python主环境。虚拟环境有点环境的“容器”意思。而且使用虚拟环境还方便项目的迁移和传播。

关于创建Python虚拟环境的工具有很多,我会介绍几种:

  • venv
  • conda
  • virtualenv
  • pipenv
  • pyenv

我主要常用的是venvconda,现在极少情况使用virtualenvpyenv

venv

venv是Python3.x里的标准库,是官方内置的虚拟环境工具。

创建一个名为venv的虚拟环境,终端下运行:

$ python -m venv venv

在当前目录下就会生成一个venv的文件夹,这个虚拟环境依赖Python主环境。

激活虚拟环境:

$ source venv/bin/activate  # Linux下
$ venv/Scripts/activate.bat  # Windows下

退出虚拟环境可以使用deactivate,或者Linux下使用source venv/bin/deactivate,Windows下使用venv/Scripts/deactivate.bat

导出虚拟环境的包列表:

$ pip freeze > requirements.txt

安装环境:

$ pip install -r requirements.txt

conda

conda也是常用的包管理工具,它也能创建虚拟环境

$ conda create -n newenv python=3.7  # 创建名为newenv的虚拟环境,并指定python版本
$ conda create -n newenv numpy python=3.7  # 创建环境的同时可以安装一些包,比如numpy
$ conda remove -n newenv numpy  # 移除newenv虚拟环境中的numpy包
$ conda remove -n newenv --all  # 完全移除newenv虚拟环境及其安装的包

conda可以指定虚拟环境里python的具体版本可以说很是带劲了

virtualenv

$ pip install virtualenv  # 安装virtualenv

命令

咕咕咕

pipenv

咕咕咕

pyenv

  1. 克隆pyenv仓库(需要git)
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
  1. PYENV_ROOTpyenv init加入bash的~/.bashrc(或zsh的~/.zshrc
$ echo 'export PATH=~/.pyenv/bin:$PATH' >> ~/.bashrc
$ echo 'export PYENV_ROOT=~/.pyenv' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc

或者使用vim编辑~/.bashrc(或zsh的~/.zshrc),在文件最后加上

export PATH=~/.pyenv/bin:$PATH
export PYENV_ROOT=~/.pyenv
eval "$(pyenv init -)"
  1. 激活pyenv
$ source ~/.bashrc(或zsh的`~/.zshrc`)

常用命令

$ pyenv install --list # 列出可安装版本
$ pyenv install <version> # 安装对应版本
$ pyenv install -v <version> # 安装对应版本,若发生错误,可以显示详细的错误信息
$ pyenv versions # 显示当前使用的python版本
$ pyenv which python # 显示当前python安装路径
$ pyenv global <version> # 设置默认Python版本
$ pyenv local <version> # 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本
$ pyenv shell <version> # 当前shell的session中启用某版本,优先级高于global 及 local

使用virtualenv

$ pyenv virtualenv env # 从默认版本创建虚拟环境
$ pyenv virtualenv 3.6.4 env-3.6.4 # 创建3.6.4版本的虚拟环境
$ pyenv activate env-3.6.4 # 激活 env-3.6.4 这个虚拟环境
$ pyenv deactivate # 停用当前的虚拟环境

自动激活

使用pyenv local 虚拟环境名,会把虚拟环境名写入当前目录的.python-version文件中,关闭自动激活 -> pyenv deactivate,启动自动激活 -> pyenv activate env-3.6.4

$ pyenv local env-3.6.4
$ pyenv uninstall env-3.6.4 # 删除 env-3.6.4 这个虚拟环境
Last modification:March 1st, 2020 at 01:16 am
如果觉得我的文章对你有用,请随意赞赏