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 |