CentOS 7.6 中部署python开发环境和python虚拟环境

大家都知道python创建项目是一件很头疼的事情~从github上克隆下来的项目经常因为由于存在各种依赖、冲突等问题,导致运行会出现各种error,比如大家克隆一个django项目,1.9和2.x版本会有很多地方都不一样,再比如像sklearn、tensorflow、pytorch等机器学习、深度学习项目,也经常会经常版本问题产生各种各样的小问题,忙来忙去发现花在这上面的时间最多,所以其实理论上,如果我们需要很方便地部署一个项目到任何地方的时候,我们应该对每一个项目都进行虚拟化(当然也可以用docker部署,docker比起python虚拟环境,则更加工程化,不仅仅适用python,而是适用任何项目,甚至是操作系统、集群等,下一篇文章准备写一个docker使用心得)。

好,下面让我们开始进入python虚拟环境的世界,我们常见的一些python虚拟环境有如下工具:

  1. virtualenv
  2. conda
  3. pipenv

我们今天只介绍 conda + virtualenv的联合使用,对于每个python项目,我们都会有一个venv文件夹用于存储该项目所有的依赖。

项目部署(以CentOS为例)

安装Anaconda

首先,我们从anacodna官网上下载anaconda

wget https://repo.anaconda.com/archive/Anaconda3-2018.12-Linux-x86_64.sh
chmod +x Anaconda3-2018.12-Linux-x86_64.sh
./Anaconda3-2018.12-Linux-x86_64.sh

按照步骤即刻一步一步安装好Anaconda3,查看~/.zshrc文件中的Anaconda3添加项。

# added by Anaconda3 2018.12 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/usr/local/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
    \eval "$__conda_setup"
else
    if [ -f "/usr/local/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/usr/local/anaconda3/etc/profile.d/conda.sh"
        CONDA_CHANGEPS1=false conda activate base
    else
        \export PATH="/usr/local/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda init <<<

我们可以看到,这里Anaconda3默认已经将base中的python环境激活了,也就是Anaconda3中的base本身其实也是一个conda创建的基础环境,安装Anaconda3对CentOS中自带的python版本完全没影响,在进入shell中就已经激活了conda中自带的base环境,可看到上面shell代码中的conda activate base,安装anaconda后,我们完全可以安装任何版本的python,有时候这个是必须的,因为有些项目使用python2开发,有时候不得不安装python的旧版本,对于tensorflow-gpu,则更是(暂时)不支持最新的python3.7,所以笔者的服务器中安装了几乎所有的python版本(2.7,3.5,3.6,3.7这几个是必须的)。

安装conda虚拟环境

利用conda命令安装虚拟环境

conda create -n py27 python=2.7

安装好之后可以利用如下命令激活虚拟环境

source activate py27

其中py27是之前命名的虚拟环境的名字,激活环境之后我们可以使用以下命令

pip -V

可以看到pip的路径为:

pip 19.0.1 from /usr/local/anaconda3/envs/py27/lib/python2.7/site-packages/pip (python 2.7)

可以看到pip的路径为虚拟环境中的python2.7中的pip,此时我们使用pip install 即可将包安装到我们刚刚安装好的py2虚拟环境中。

可以使用如下命令退出该激活环境

source deactivate py27

为什么要用conda创建虚拟环境呢?笔者总结了几点原因如下:

  • conda的环境都在 anaconda3/envs/ 目录下,使用conda可以很方便地进行全局虚拟环境管理
  • 使用conda部署虚拟环境对我来说,就是很方便地兼容各个版本的python
  • 激活conda部署的环境后,可以使用virtualenv对每个项目进行唯一的环境管理

安装virtualenv

使用pip即可安装virtualenv,我们在上面的基础上,继续创建虚拟环境

mkdir test && cd test
virtualenv venv

test文件夹会中会生成一个venv文件夹,此时可以使用如下命令激活

source venv/bin/activate

激活后,我们再使用如下pip -V命令,可以得到如下结果

pip 19.0.2 from /root/test/venv/lib/python3.5/site-packages/pip (python 3.5)

我们下次进入该目录后,不需要先激活conda了,直接使用 source venv/bin/activate 即可使用

最后,可以直接使用pip生成requirments文件

pip freeze > requirements.txt

那么别人如果克隆了你的项目,可以先 

source venv/bin/activate
pip install -r requirements.txt

 

你可能感兴趣的:(Python,版本控制)