本文讨论的前提是 Linux
系统下的非 root
权限的多版本, 多项目的 Python
环境配置.
root
权限下, Python
使用出现报错, 那可以 google
对应的错误, 大多数情况下可以找到解决方法;
如果不在系统版本的 Python
下进行开发, 那编译安装所需版本的 Python
就在所难免, 但一定要记住, 不要试图替换当前系统的 Python
版本, 想都不要想, 否则系统可能都会不工作了(血的教训);
实际开发中, 如果项目 1 使用 Python 2.7.12
, 项目2 使用 Python 3.6.0
, 就得每个都得编译一遍, 还要在跑代码时候, 记得指定具体的路径, pip
时候一定要确认是对应的项目下, 总之, 会有很多坑.
而 Python
多版本依赖工具就可以将上述的问题做最大的简化, 本文也是在解决上面坑的时候积累得到的.
本文主要使用的工具是 pyenv
, virtualenv
, Anaconda
, 但不会讲解每个具体怎么用, 因为官方文档已经很详细了, 而且一直在更新.
阶段一
之前 Python
项目开发, pyenv
主要是做 Python
多版本管理, virtualenv
是做项目版本管理, 项目开发的也是顺利.
但随着做的项目多了, 还是会遇到些问题. 比如有些服务器, 管理员只是安装了系统必需的包, 那么非 root
权限下 pyenv
安装某些版本的 Python
, 如果它依赖系统的包(gcc
, bzip2
, mkl
等等)不存在的话, 除非要 root
权限安装, 否则安装的 Python
版本会有问题. 具体可以看 wiki. 实际项目中, 我们开发的项目需要 SciPy
, 但所在的服务器没有 BLAS
, 安装时会提示
这个时候就只能去联系服务器管理员了, 或者手动编译 BLAS
到自己的路径下.
阶段二
后来被同事安利了 Anaconda
, 发现它可以解决系统包的问题, 实际上, 是 Anaconda
把大部分科学计算包都集成到自己的环境中了.
我主要做数据处理,开发相关的工作, 所以现在的 Python
开发处理流程, 大体是这样的.
- 先安装
pyenv
, 主要用于后面的Python
,Anaconda
等版本控制. pyenv
安装Anaconda
.Ananconda
安装需要的Python
版本.- 到对应的
Python
版本下,pip
安装virtualenv
. - 到项目路径下, 使用
virtualenv
安装项目的Python
环境. source
到当前项目环境下,pip
安装需要的package
.deactivate
退出项目的虚拟环境.
好处是解决了阶段一面临的问题, 但不好的地方是, 会安装一些可能项目永远也用不到的 package
.
安装步骤实例
安装 Anaconda
Anaconda: 基于Python的科学工具包
安装方式有两种:
- 官网下载安装包
- 通过 pyenv 安装(推荐)
安装 pyenv
pyenv: 多 Python 版本管理工具
|
|
pyenv 下安装 Anaconda
|
|
这时, 在当前的路径下, 输入 python
进入交互环境, 实际是上面的 Python 3.6
.
配置项目环境
对每个 Python
项目, 推荐单独设置项目级别的虚拟环境, 好处是每个项目独享某个版本的 Package
, 不会因为受到其他项目的影响. 实际操作如下
|
|
总结
基于 Python
开发也主要是上述两个阶段, 阶段一主要是 web 项目, 阶段二是数据计算相关的处理,
熟悉上面的流程, 大体就可以在 Python
的各版本, 各项目中自由穿梭了.