利用Python的virtualenv
Python的版本众多,很多lib在不同Python版本之间的兼容性不尽相同,之前使用Python时非常苦恼,比如字符编码问题,mysql客户端lib,以及在数据挖掘和量化交易中的工具(如zipline)。虽然现在也有conda能简化这些操作,但是学会virtualenv仍然是Python开发能力发展的必经之路。
virtualenv可以快速解决不同Python项目之间使用不同lib导致的Python版本无法统一问题(比如Project A需要的lib X需要Python2.7,而Project B需要的lib Y需要Python3.5)。而且使用virtualenv非常方便,一旦了解使用方式,之后的Python开发习惯将完全替代原有直接依赖Path中Python版本,以及直接在系统范围内pip install的习惯。
Windows下使用virtualenv
Windows下的Python开发使用virtualenv是很简单的事情,安装使用PyCharm。在创建项目时(New Project),可以选择运行在virtualenv环境下,之后其它操作都不变,利用PyCharm中运行python脚本,以及在项目的控制台(Terminal)中pip install安装lib,都会在创建的virtualenv中运行。不同项目的virtualenv之间互不影响。

Linux下使用virtualenv
在linux环境中(Redhat或CentOS)安装virtualenv
sudo pip install python-virtualenv
创建一个virtualenv
virturalenv EnvName
执行创建env会,会创建一个目录(EnvName),目录结构为
- bin
- lib
- lib64
- pyvenv.cfg
进入virtualenv环境
source EnvName/bin/activate
退出virtualenv环境
deactivate
Linux中设置virtualenv运行的crontab
可以利用一个run.sh脚本,并在crontab中执行,run.sh内容大致为:
#! /bin/bash
Main()
{
source ${EnvName绝对路径}/bin/activate
## 需要执行的脚本内容
deactivate
}
Main "$@"
exit $?
不要提交virtualenv目录到git
Python的开发使用场景,经常是开发人员在Windows上开发代码,但是通过git发布部署到Linux的服务器上运行,因此,开发人员会习惯性把Python整个项目提交到git上,其中包含了virtualenv。
但这样是有问题的,因为Windows和Linux下的virtualenv目录内容不同,最基本的不同是python执行文件在Windows和Linux上不同,不能跨平台兼容,因此提交git只是提交代码,Linux服务器上的运行环境,单独部署创建virtualenv。