当我们在日常python开发过程可能会出现同时并行开发几个项目,或者在开发一个项目的时候临时出现老大让我们处理另一个项目的紧急需求的场景。此时让我们棘手的首先不在是需求多难,而是如果出现并行项目都使用到同一个包,并且包由于版本等原因,出现不能共用的情况。那此时应该如何取舍呢?尤其当我们频繁去切换项目时,又该如何处理?总不能卸载后有安装,安装完又卸载吧,想想就让人不寒而栗。于是我们今天要介绍的主人公
虚拟环境
便身披霞衣,脚踏七彩祥云出现了……
- 总结一句话,python的虚拟环境实际上就是为了方便我们在开发的时候每个项目都可以有一份属于自己定制版的环境,从而让我们在开发过程中不会出现依赖包相互冲突的尴尬情况。
- 对于虚拟环境,其实就是将
/usr/bin
(可能目录有异,可通过which python3
查看)目录下的python3复制一份到当前的目录下的./bin
。同时我们以后所下载的包,都将在当前目录下的./lib/site_package/
下。 - 对于虚拟环境配置,可以分为一下几种方式:
python自带模块venv (适用于^3.3.0)
- 自从python3.3版本开始,python可以通过
venv
模块,来创建和管理虚拟环境。 - 食用方式:
- 创建虚拟环境:
python3 -m venv dir_name
,对于文件名,如果存在则直接使用,不存在则进行创建 - 运行:
source dir_name/bin/activate
(MacOS || Unix) ||dir_name\Scripts\activate.bat
(windows) - 如果不出意外按照上面的操作,就已经成功的建立起了一个python的虚拟环境,具体表现为,会在命令行前面添加一个对应建立的虚拟环境名称:
(test_dir) xiaoming@xiaomingMacBook-Pro test_dir %
- 至此,我们就可以快乐的虚拟环境中“呼风唤雨”了。
- 当进入环境后,我们去安装的包都将安装到当前的虚拟环境
- 退出环境:
deactivate
- tips:对于*MacOS || Unix安装相关包时,切勿使用
sudo pip3 install xxx
命令去安装包,这种方式会将包安装到全局环境中,会污染全局环境。
- 创建虚拟环境:
使用virtualenv工具来创建虚拟环境
-
virtualenv
是当前比较流行的python虚拟环境配置工具。支持python2和python3 - 食用方式:
- 安装:
sudo pip3 install virtualenv
。- tips:在这里建议使用
sudo
对virtualenv
进行全局安装,否则在后续过程中可能会出现在我们使用virtualenv
进行创建虚拟环境的时候,出现command not found:virtualenv
。如果已经安装,则可通过添加对应的环境变量来正常使用。具体使用方式可自行Google,或者看到第三种方式中有介绍。
- tips:在这里建议使用
- 创建一个新的文件夹,并进入:
mkdir dir_name && cd dir_name
- 创建python虚拟环境:
virtualenv 环境名
,创建成功后会在当前文件夹下多出一个环境名
对应的文件夹- tips:如果看到笔者所述,则定为初步学习者,则此时接触到的
virtualenv
版本应该是>=20
的,因此不再需要添加。--no-site-packages
指令来建立不包含全局包的python环境,因为当前的版本已经默认是不从全局引入包,反之如果需要引入全局已经安装的包。可以使用--system-site-packages
。具体参数说明,可点击查看 - 也可通过
-p
||-python
来指定依赖的python环境。
- tips:如果看到笔者所述,则定为初步学习者,则此时接触到的
- 运行:
source 环境名/bin/activate
- 一顿操作……
- 退出环境:
deactivate
- 安装:
使用virtualenvwrapper工具创建虚拟环境
virtualenvwrapper
顾名思义,是对virtualenv
进行了一次扩展。其核心思想集中化:将虚拟环境集中到一起,到后面我们在使用的时候,直接选择符合自己需求的虚拟环境,实现于项目的解耦。-
配置方式:
- 安装:
sudo pip3 install virtualenvwrapper
- 新建目录用来存放环境目录:建议放在当前用户的目录下。
mkdir ~/环境目录名
- 配置环境变量(不知道怎么在mac下创建环境变量的看过来~)
- 在当前用户的目录下创建
.bash_profile
(如果存在,则直接使用)。进入文件:vim ~/.bash_profile
,写入:
# 设置virtualenvwrapper export WORKON_HOME=环境目录路径 export VIRTUALENVWRAPPER_PYTHON=python环境路径(可通过`which python3`查看) # 打开终端自动启用 source /usr/local/bin/virtualenvwrapper.sh
- 打开
.zshrc
,执行vim ~/.zshrc
并写入(如果有安装item2
与oh-my-zsh
)
# 设置virtualenvwrapper export WORKON_HOME=环境目录路径 export VIRTUALENVWRAPPER_PYTHON=python环境路径(可通过`which python3`查看) # 打开终端自动启用 source /usr/local/bin/virtualenvwrapper.sh
- 在当前用户的目录下创建
- 执行配置文件使设置生效
source ~/.bash_profile source ~/.zshrc
- 至此,基本的配置已经完结。
- 安装:
-
常用指令:
- 创建虚拟环境:
mkvirtualenv 虚拟环境名称
- tips:如果存在python2和python3则此时默认使用的python2环境。如需使用python3,需进行指明:
mkvirtualenv -p python3 虚拟环境名
- tips:如果存在python2和python3则此时默认使用的python2环境。如需使用python3,需进行指明:
- 使用虚拟环境:
workon 对应环境名
- 查看有多少个虚拟环境
lsvirtualenv
||workon 空格 + 两个tab
- 退出虚拟环境:
deactivate
- 删除环境:
rmvirtualenv 虚拟环境名
- 创建虚拟环境:
更多相关配置请查看官网
-
关于linux配置vittualenvwrapper
基本配置和命令于上述所书均相同。唯一区别在配置环境变量上:
-
编辑home目录下的
.bashrc
文件# 设置virtualenvwrapper export WORKON_HOME=~/虚拟环境名 # 打开终端自动启用 source /usr/local/bin/virtualenvwrapper.sh