python用virtualenv(虚拟环境)进行版本隔离(venv)

提出问题

开发场景1:

在开发时python项目时,有时需要用不同的python版本,比如:开发A项目需要用到python3,开发B项目需要用到python2,在开发项目A和B时需要切换系统环境变量的python版本。

开发场景2:

在不同的项目中,需要安装第三方库,比如:在项目A中,需要安装k1库,在项目B中,需要安装k2库,那么k1、k2库都会安装python的site-packages文件夹下

随着开发项目的增多,安装的第三方库也会越来越多,python的site-packages文件夹下的内容也会越来越庞大

解决问题:

每个应用拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境

virtualenv 介绍

就是把系统Python复制一份到virtualenv的环境,用命令 venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。

安装

pip install virtualenv

安装成功后,在python/Scripts目录下有virtualenv.exe文件

更新

如果安装过,根据情况进行更新

pip install --upgrade virtualenv

查看版本

virtualenv --version

windows 使用

创建项目文件夹

如:创建文件夹 myproject

创建环境

在myproject文件夹下执行:

virtualenv venv

venv 是创建的文件夹名

结果:

Using base prefix 'c:\\users\\mym\\appdata\\local\\programs\\python\\python35'
New python executable in H:\python-workspace\django\cms\env\Scripts\python.exe
Installing setuptools, pip, wheel...done.

此命令是根据系统环境变量的python版本,创建虚拟环境

执行后在myproject文件夹下有env文件夹,新建的Python环境放在env文件夹下

windows venv目录文件结构如下图:

  • Lib文件夹:是系统自带的库
  • Scripts文件夹:python、pip命令,以及启用当前环境变量和关闭环境变量的命令

用指定的python版本创建环境

如果系统中有python2和python3,当前项目要用python3,那么执行下面的命令:

virtualenv -p c:\Python36\python.exe env

说明: -p就是python的版本(需要带上路径),表示当前env环境变量用的是python3

启用环境

venv\scripts\activate

关闭环境

env\scripts\deactivate

centos 使用

创建项目文件夹

如:创建文件夹 myproject

创建环境

在myproject文件夹下执行:

python3 -m venv venv

venv 是创建的文件夹名

启用环境

. venv/bin/activate

执行结果如下:

(venv) [root@hadoop1 superset]#

看到上面 (venv) ,说明启动成功

关闭环境

执行下面命令:

deactivate

其他系统启动环境

linux

source venv/bin/activate

mac下:

source venv/bin/activate

注意到命令提示符变了,有个(env)前缀,表示当前环境是一个名为env的Python环境

linux、mac常见错误 Permission denied

如果使用linux、mac启动环境时,遇到下面错误:

-bash: ./env/bin/activate: Permission denied

很有可能 venv/bin/activate文件没有可执行权限
通过下面链接查看是否有可执行权限:
https://www.malaoshi.top/show_1EF58IuiweuZ.html

通过下面链接增加可执行权限:
https://www.malaoshi.top/show_1EF58KvqCELz.html

安装第三方库

此时执行pip install命令时,就将库安装到env环境中
在Lib/site-packages文件夹下

系统Python环境不受任何影响

其他系统关闭环境

linux下:

source venv/bin/deactivate

问题

在开发项目时,需要安装若干第三方库,将代码放到其他计算机时,为了能够正常运行,需要在这台计算机上安装python解释器,以及安装与开发时相同的第三方库。
如果第三方库很多,该如何用最简单的方式在另一台计算机上安装呢?

将第三方库导出到文件

pip freeze > requirements.txt

将第三方库导出到文件 requirements.txt

根据文件安装第三方库

pip install -r requirements.txt

原文出处:/show_1EF1oyTTvLZd.html