提出问题
开发场景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
