Table of Contents
第三章 Python环境管理
如果已经了解Python环境是什么以及为何管理Python环境,则可以跳过第一节。
3.1 前言
在用Pyhton实践编程前,我们需要先搭建一个Python环境用于编译运行python源程序。对于windows、Unix和Linux平台可以去Python官网下载对应平台的安装包并执行下一步傻瓜式安装。而Mac平台已经预装了Python环境,因此不必再额外安装。总而言之,搭建Pyhton环境就是下载安装包,然后配置环境变量就好,总体较为简单,想了解详情者可参考博客Python环境安装。
有时电脑中可能有多个Python项目,而不同的Python项目可能要求不同的Python环境,可能有的要求Pyhton3的环境,而有的要求Pyhton2.7的环境。除此之外,不同项目可能会要求不同的包,不同包对不同环境的支持度是不同的,可以完成的任务也是不同的。可以用衣柜做一个简单的类比,衣柜整体就好比电脑第一次安装的Python环境,将四季都放入衣柜中无疑会使衣柜杂乱且不便于寻找。为衣柜添加一些隔层,将不同季节的衣服放在不同隔层中无疑会方便整齐很多,这就像在电脑中又安装了几个其它环境。这些环境相互独立互不干扰,我们可以利用Virtulenv,conda等工具对这些环境进行统一管理。
3.2 Virtualenv
Virtulenv是用于创建隔绝Pyhton环境的常用工具,它会创建一个文件,其中包含必要的可执行文件和Python工程所需要的包。
- 基础安装
安装virtualenv:
$ sudo pip install virtualenv
在任意目录下创建一个测试目录:$ mkdir Virtualenv $ cd Virtualenv
此时测试目录下为空,在测试目录下创建一个虚拟环境env1:
$ virtualenv env1
此时测试目录下多了一个名为env1的文件夹,其中包含bin,include,lib三个目录,bin(binary)目录用来存储可执行的二进制文件。include目录则包含编程所需的一些头文件。lib目录则用来存储库文件。 - 扩展安装
安装完毕virtualenv后需要再安装virtualenv的扩展包Virtaulenvwrappe,可以更加方便地增加,删除,复制,切换虚拟环境。运行如下命令进行安装,默认安装在/usr/local/bin
目录下。$ sudo easy_install virtualenvwrapper Password: Searching for virtualenvwrapper ... Copying virtualenvwrapper-4.8.4-py3.7.egg to /Users/Dabao/anaconda3/lib/python3.7/site- packages Adding virtualenvwrapper 4.8.4 to easy-install.pth file Installing virtualenvwrapper.sh script to /Users/Dabao/anaconda3/bin Installing virtualenvwrapper_lazy.sh script to /Users/Dabao/anaconda3/bin ... Finished processing dependencies for virtualenvwrapper
通过观察安装过程可知,Virtualenvsrapper安装在
/Users/Dabao/anaconda3/
目录下而非/usr/local/bin
,记住代码中列出的目录位置,后续安装使用需要。在使用 Virtualenvwrappe 前需要设置环境变量和运行 virtualenvwrapper.sh 文件。其中环境变量用来指定使用 Virtualenvwrappe 的目录,所以要创建一个目录用来储存所有的虚拟环境。由于之前已经创建了一个名为Virtualenv的目录,就使用该目录作为工作目录。# 环境变量为先前创建的Virtualenv文件所在路径 $ export WORKON_HOME=/Users/Dabao/Desktop/Study/Algorithm/Practice/TensorFlow/Virtualenv # 将安装过程中出现的virtualenvwrapper.sh路径拷贝于此 $ source /Users/Dabao/anaconda3/bin/virtualenvwrapper.sh
上述命令运行完毕后,目录Virtualenv下新增加了许多二进制文件,下一步进入Virtualenv目录并利用Virtualenvwrappe来创建虚拟环境。
$ mkvirtualenv env2
此时Virtualenv目录下又新增一个内部结构与env1相似的名为env2的文件夹,这是一个与env1相隔离的新环境。
每次退出终端后再进入Virtualenv目录时就无法使用Virtualenvwrappe的命令,如mkvirtualev
等,可以将之前设置环境变量和使用virtualenvwrapper.sh的命令加入/.bash_profile
中,以后就可以直接在终端使用Virtualenvwrappe的命令。$ open ~/.bash_profile #添加如下代码到新打开的.bsh_profile文件中并保存 # export WORKON_HOME=/Users/Dabao/Desktop/Study/Algorithm/Practice/TensorFlow/Virtualenv # source /Users/ruogulu/anaconda3/bin/virtualenvwrapper.sh $ source ~/.bash_profile
- 基本操作
- 列出虚拟环境:
$ lsvirtualenv -b
- 切换虚拟环境:
$ workon env1
- 查看环境中安装了哪些包:
$ lssitepackages
- 进入当前环境(进入该环境的文件夹):
$ cdvirtualenv
- 进入当前环境的site-packages:
$ cdsitepackages
或
$ cdsitepackages pip
- 复制虚拟环境:
$ cpvirtualenv env1 env3
- 退出虚拟环境:
$ deactivate
- 删除虚拟环境:
$ rmvirtualenv env3
- 安装Numpy,Scipy等Python包
切换至目标环境如env1,然后输入$ pip install numpy
就可安装 Numpy 包。$ workon env1 $ pip install numpy Collecting numpy ... $ lssitepackages __pycache__ pkg_resources easy_install.py setuptools numpy setuptools-41.0.1.dist-info numpy-1.16.4.dist-info wheel pip wheel-0.33.4.dist-info pip-19.1.1.dist-info
虚拟环境的相关安装完毕,可以开心地捣鼓Python了。