Python-virtualenv的使用
我们为什么需要virtualenv
许多情况下, 项目中使用的Python环境各异, 不只是有Python2和Python3的差异,
还有不同类库版本的差异, 例如BeautifulSoup就有3和4. 当我们在本机上安装好Python
后, 某些时候, 我们不想使自己的Python环境被污染, 同时, 我们也想将本地的环境与
服务器端的环境相统一, 包括Python版本与类库的版本.
不同的开发语言也提供了不同的”容器”形式或是”包管理”形式 包管理:
Python中可以使用requirements.txt,Node中有npm的package.json,Java中有Maven和Gradle, 这些包管理工具使环境搭建变得尤为简单容器:
Python中有virtualenv,Node中有npm的node_modules, 另外还有近年来流行的Docker, 这些容器可以使本机环境与开发环境隔离开来不论是”容器”还是”包管理”的形式, 终究是为了将代码的开发或是环境进行 一定程度上的统一, 站在稍高的角度去理解, 这些工具就是为了简化开发而使用 切不可舍本逐末, 重视代码质量才是王道
virtualenv的安装与简单使用
安装
virtualenv方法多样, 笔者使用的是Archlinux, 可以简单通过pacman或是Python的pip进行安装, 使用其它版本的Linux也有不同安装方法, 最不济也能用源码包安装使用
virtualenv
1 | virtualenv2 venv # 建立Python2的环境, virtualenv3为Python3环境 |
该命令运行过后, 当前文件夹下会产生venv文件夹, 可以通过ls -al查看
- 启动当前环境
1 | source venv/bin/activate |
该条命令更新当前的Python环境, 在执行语句过后, 
可以看到, 在PS1之前出现了(venv)的标记, 表明我们现在使用的是刚刚新建的环境
此时, 我们可以运行python命令查看, 当前调出的交互式shell运行环境已经不同
virtualenv与requirements.txt配合使用
如果说
virtualenv提供了快速新建干净的Python环境的能力, 那么requirements.txt则提供了快速的导入开发环境的能力
requirements.txt的使用我们使用
requirements.txt是为了将类库的导入交给pip去做, 当我们获取项目源码后
如果项目源码中包含有requirements.txt, 我们可以使用如下方式导入类库
1 | pip install -r requirements.txt |
当然, 最好是在已经用virtualenv建立的环境之下
requirements.txt的建立
当我们新建项目时, 总会使用一些类库, 如果是在virtualenv环境下, 我们环境中的类库
为当前所需, 使用如下方式导出
1 | pip freeze > requirements.txt |
导出后当前目录就会新建requirements.txt的文件, 类似如下
1 | appdirs==1.4.0 |