python 虚拟环境

1. 什么是Python虚拟环境

Python虚拟环境是针对不同Python工程的独立环境,用于隔离不同工程之间的依赖关系。每个虚拟环境都有自己的解释器、依赖库和Python程序,可以在不同环境中使用不同版本的Python和第三方库,避免Python的全局环境被更改,导致项目之间的冲突。虚拟环境创建后,不受全局Python环境变量和库文件影响,可以单独管理Python程序、依赖库。

2. Python虚拟环境的作用

2.1 隔离依赖

Python虚拟环境的主要作用之一就是隔离依赖,防止不同项目依赖的库版本冲突。例如,一个项目需要使用flask 0.12版本,而另一个需要用到flask 1.0版本。如果在同一个Python环境下,就需要同时安装两个版本的flask,并同时运行两个项目。这种情况很容易带来不必要的麻烦,例如版本冲突、应用崩溃等。通过使用虚拟环境,每个项目的依赖都可以被单独管理,不会与其他项目冲突。

2.2 接管Python环境

Python虚拟环境的一大优势是能够接管Python环境。Python直接安装在系统中,会将Python放在系统的PATH环境变量下,因为Python不同的版本的变化会直接影响到每个工程。在虚拟环境中,Python环境是独立的,可以避免因Python环境版本差异,导致程序无法执行。

3. Python虚拟环境的使用

3.1 安装虚拟环境模块

Python官方提供了一个Virtualenv工具,可以用来创建虚拟环境。首先,需要安装virtualenv:

pip install virtualenv

3.2 创建虚拟环境

安装完成后,就可以使用virtualenv创建虚拟环境:

virtualenv venv

上述命令创建了一个名为venv的虚拟环境。在此之后,所有的Python程序和库都被安装在venv目录下。有时,为了区分不同版本的Python,可以给虚拟环境命名,如:

virtualenv -p /usr/bin/python3.6 venv_py36

上述命令创建了一个名为venv_py36的虚拟环境,并使用Python3.6来创建环境。

3.3 运行虚拟环境

虚拟环境创建完成后,需要激活虚拟环境才能使用它。在Linux/Mac系统下,激活命令为:

source venv/bin/activate

在Windows下,则为:

venv\Scripts\activate.bat

激活虚拟环境后,终端会显示虚拟环境名称,并且命令提示符前会加上环境名称的前缀。

3.4 安装Python包

激活虚拟环境,就可以使用pip安装Python包,如:

pip install flask

在虚拟环境中,所有Python包都是安装在虚拟环境目录下,与全局Python环境完全隔离。

3.5 退出虚拟环境

退出虚拟环境,使用的是deactivate命令:

deactivate

4. Pyenv

4.1 Pyenv是什么

pyenv是一个用于管理多个Python版本的工具,类似于nodejs的nvm,不需要sudo及root用户权限即可在单个用户环境下为不同项目配置不同的Python版本。此外,pyenv还支持对不同Python版本配置不同的依赖库、Python解释器和环境变量。

4.2 安装Pyenv

在Unix/Linux系统下,可以使用curl或wget命令安装pyenv,如:

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

pyenv会被安装在用户目录下的~/.pyenv/目录下。

4.3 配置Pyenv

安装后,需要在bashrc/zshrc等配置文件中配置环境变量,使pyenv可用。在bashrc/zshrc文件中添加以下代码:

export PYENV_ROOT="$HOME/.pyenv"

export PATH="$PYENV_ROOT/bin:$PATH"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

4.4 使用Pyenv

4.4.1 安装Python版本

在pyenv中,安装Python非常简单:

pyenv install 3.6.4

上述命令会从官网下载Python 3.6.4版本的源码,进行编译安装,安装好的Python将会被存储在~/.pyenv/versions/目录下。

4.4.2 查看已安装Python版本

查看已经安装的Python版本,使用以下命令:

pyenv versions

4.4.3 切换Python版本

pyenv可以在不同版本之间进行切换。使用以下命令进行Python版本切换:

pyenv global 3.6.4

上述命令将Python全局版本设置为3.6.4。

4.4.4 创建虚拟环境

pyenv还可以创建虚拟环境,使用以下命令:

pyenv virtualenv 3.6.4 venv3.6.4

上述命令创建了一个名为venv3.6.4的虚拟环境,版本为Python3.6.4。

4.4.5 查看已安装虚拟环境

查看已经安装的虚拟环境,使用以下命令:

pyenv virtualenvs

4.4.6 激活虚拟环境

激活虚拟环境,使用以下命令:

pyenv activate venv3.6.4

4.4.7 退出虚拟环境

退出虚拟环境,使用以下命令:

pyenv deactivate

5. 总结

Python虚拟环境和pyenv都是非常好用的Python环境管理工具。前者用于管理Python的全局依赖库和环境,解决不同项目之间Python版本和库版本的冲突,后者用于管理Python版本和虚拟环境,可以在不同版本的Python之间随意切换,为不同项目提供独立的开发环境。在实际项目中,根据实际情况选择适合自己的Python环境管理工具非常重要。

后端开发标签