必要性

单台服务器能保证只运行一个服务的话,那么确实是可以直接装在系统上的。不是的话,就涉及到多个服务的依赖和兼容问题了。

比如一个系统里同时部署两个服务,一个是Django 1.4的,一个是Django 1.7的,怎么办?

上面这种还是比较直观的,有这种需求的时候,肯定就会知道去用virtualenv之类的,但是另外一种情况就更可怕。

需要同时部署A和B两个项目,A项目要用到a这个库,而a这个库又依赖于c这个库的1.0版本。同时呢,B项目需要用到b这个库,b又依赖于c的2.0版本,这时候如果都安装在系统上的话, 就不一定是哪个坏掉了。

补充两点。有了 virtualenv 之后你就可以把那个文件夹整体拷贝了,部署起来方便很多。而且如果都装系统里,想 pip freeze 出来 requirements 怎么办?没法办。所以必须得隔离出一个独立环境。

OS X 下的虚拟环境解决方案(conda)

  1. 安装 anaconda

  2. 更换 conda 源(只需一次)

    #中科大
    conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/free/
    
    #清华
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --set show_channel_urls yes
  3. 在 anaconda 的 environments 界面中为项目创建一个独立的虚拟环境

    (命令行方式管理conda 虚拟环境)

    创建环境
    conda create --name your_env_name
    
    创建指定python版本的环境
    conda create --name your_env_name python=2.7
    conda create --name your_env_name python=3
    conda create --name your_env_name python=3.5
    
    列举当前所有环境
    conda info --envs
    conda env list
    
    复制某个环境
    conda create --name new_env_name --clone old_env_name 
    
    删除某个环境
    conda remove --name your_env_name --all
  4. 在终端进入上一步创建的虚拟环境,用 pip 安装依赖包.

    source activate 环境名称
    #进入某虚拟环境下
    
    #退出当前环境
    deactivate 
  5. 在 pycharm 中的 interpreter 选择相应的conda 虚拟环境即可.路径在/anaconda3/envs/虚拟环境名称/bin/python

  6. 分享conda环境:首先通过activate target_env要分享的环境target_env,然后输入下面的命令会在当前工作目录下生成一个environment.yml文件,

    conda env export > environment.yml1

    小伙伴拿到environment.yml文件后,将该文件放在工作目录下,可以通过以下命令从该文件创建环境

    conda env create -f environment.yml

Linux线上用conda命令行管理虚拟环境

1、首先在所在系统中安装Anaconda。可以打开命令行输入conda -V检验是否安装以及当前conda的版本。

2、conda常用的命令。

    1)conda list 查看安装了哪些包。

    2)conda env list 或 conda info -e 查看当前存在哪些虚拟环境

    3)conda update conda 检查更新当前conda

3、创建python虚拟环境。

     使用 conda create -n your_env_name python=X.X(2.7、3.6等)命令创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。

4、使用激活(或切换不同python版本)的虚拟环境。

    打开命令行输入python --version可以检查当前python的版本。

    使用如下命令即可 激活你的虚拟环境(即将python的版本改变)。

    Linux:  source activate your_env_name(虚拟环境名称)

    Windows: activate your_env_name(虚拟环境名称)

   这是再使用python --version可以检查当前python版本是否为想要的。

5、对虚拟环境中安装额外的包。

    使用命令conda install -n your_env_name [package]即可安装package到your_env_name中

6、关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)。

   使用如下命令即可。

   Linux: source deactivate

   Windows: deactivate

7、删除虚拟环境。

   使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。

8、删除环境中的某个包。

   使用命令conda remove --name your_env_name  package_name 即可。

其他工具

autoenv

项目主页

首次部署

项目主页的四种方式,经过我的macbook测试,brew安装的版本不支持离开目录自动退出虚拟环境。所以推荐用git方式安装

  • git clone完后,修改sh脚本里的enable_leave为非空字符串

    项目使用

  • 项目目录创建.env文件,内容为进入虚拟环境的命令,比如source activate xxxx
  • 项目目录创建.env.leave文件,内容为退出虚拟环境的命令,比如source deactivate
文章目录