python virtualenv

 

Python由于开源社区的支持,第三方包非常丰富,但通常我们在开发某个项目的时候,只需要部分的第三方依赖包。virtualenv可以建立不同的虚拟python环境,使得python项目互相独立,直接部署到别的机器。

virtualenv

A、安装:pip3 install virtualenv

B、测试是否安装成功: virtualenv --version

C、使用virtualenv为一项目(myproject)搭建一个虚拟环境:

  virtualenv py3 # 虚拟环境使用默认python
  virtualenv -p python路径 py3       # 虚拟环境指定python路径

  virtualenv --no-site-packages py3 #已经安装到系统Python环境中的所有第三方包都不会复制过来
D、进入虚拟环境:(需要进入myproject项目路径后): source py3/bin/activate

  (py3) xueerhuandeMacBook-Pro:ll xueerhuan$ source py3/bin/activate

  (py3) xueerhuandeMacBook-Pro:ll xueerhuan$ 

 

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

 

 E、退出当前的venv环境:deactivate

   

virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令pythonpip均指向当前的virtualenv环境。

其它命令看:https://www.cnblogs.com/yixuetang/p/8359856.html

 

virtualenvwrapper

virtualenvwrapper 是一个基于virtualenv扩展的工具,它将所有的虚拟环境统一管理。

   1、安装

    前提: virtualenv 已经安装

pip install virtualenvwrapper
export WORKON_HOME=~/Envs  #设置环境变量
mkdir -p $WORKON_HOME #创建虚拟环境管理目录
find / -name virtualenvwrapper.sh #找到virtualenvwrapper.sh的路径
source 路径 #激活virtualenvwrapper.sh

    默认virtualenvwrapper安装在下面python解释器中的site-packages,实际上需要运行virtualenvwrapper.sh文件才行;所以需要先进行配置一下:

  • 找到virtualenvwrapper.sh的路径:find / -name virtualenvwrapper.sh 
  • 运行virtualenvwrapper.sh文件:source 路径

 

2、执行:source 路径    命令报错:

 

错误原因:机器安装了2.7和3.x两个版本的python,在安装时使用的是sudo pip3 install virtualenvwrapper
但运行source 路径 命令时默认使用的是python2.x,但在python2.x中不存在对应的模块。(virtualenvwrapper.sh文件内容如下:):

# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then
  VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

virtualenvwrapper.sh文件表示:当不存在VIRTUALENVWRAPPER_PYTHON环境时,会默认选择使用which python的python(我这里默认是python2),

 

所以解决方法为增加此环境变量:

vim ~/.bash_profile,在~/.bash_profile里添加:

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  #(此处为本机python3的路径)

 

然后:source ~/.bash_profile使添加的环境变量生效

 

 

 

posted @ 2018-07-23 17:01  yoyo008  阅读(194)  评论(0编辑  收藏  举报