此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存。 pyenv 就是这样一个Python版本管理器。
安装pyenv
-
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv现在是这个地址: https://github.com/pyenv/pyenv.git
-
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
-
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
-
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
-
$ exec $SHELL -l
安装Python
查看可安装的版本
$ pyenv install --list
该命令会列出可以用pyenv安装的Python版本,仅列举几个:
-
.7.8 # Python 2最新版本
-
.4.1 # Python 3最新版本
-
anaconda-4.0.0 # 支持Python 2.6和2.7
-
anaconda3-4.0.0 # 支持Python 3.3和3.4
其中形如 x.x.x 这样的只有版本号的为Python官方版本,其他的形如 xxxxx-x.x.x 这种既有名称又有版本后的属于“衍生版”或发行版。
安装Python的依赖包
在安装Python时需要首先安装其依赖的其他软件包,已知的一些需要预先安装的库如下。
在CentOS/RHEL/Fedora下:
-
sudo yum install readline readline-devel readline-static
-
sudo yum install openssl openssl-devel openssl-static
-
sudo yum install sqlite-devel
-
sudo yum install bzip2-devel bzip2-libs
安装指定版本
使用如下命令即可安装python 3.4.1:
$ pyenv install 3.4.1 -v
该命令会从github上下载python的源代码,并解压到/tmp目录下,然后在/tmp中执行编译工作。若依赖包没有安装,则会出现编译错误,需要在安装依赖包后重新执行该命令。
如果网络不太好,用pyenv下载会比较慢,可以先执行该命令,然后到 ~/.pyenv/cache 目录下查看要下载的文件的文件名,然后自己到官方网站下载,并将文件放在 ~/.pyenv/cache 目录下(~/.pyenv/cache/ 一般需要手动创建)。pyenv会检查文件的完整性,若确认无误,则不会再重新下载。
对于科研环境,更推荐安装专为科学计算准备的Anaconda发行版, pyenv install anaconda-4.0.0 安装Python 2.x版本, pyenv install anaconda3-4.0.0 安装Python 3.x版本;
查看当前已安装的python版本
-
$ pyenv versions
-
* system (set by /home/seisman/.pyenv/version)
-
.4.1
其中的星号表示当前正在使用的是系统自带的python。
设置全局的python版本
-
$ pyenv global 3.4.1
-
$ pyenv versions
-
system
-
* 3.4.1 (set by /home/seisman/.pyenv/version)
当前全局的python版本已经变成了3.4.1。也可以使用 pyenv local 或 pyenv shell 临时改变python版本。
确认python版本
-
$ python
-
Python 3.4.1 (default, Sep 10 2014, 17:10:18)
-
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
-
Type "help", "copyright", "credits" or "license" for more information.
-
使用python
- 输入 python 即可使用新版本的python;
- 系统自带的脚本会以 /usr/bin/python 的方式直接调用老版本的python,因而不会对系统脚本产生影响;
- 使用 pip 安装第三方模块时会安装到 ~/.pyenv/versions/3.4.1 下,不会和系统模块发生冲突。
- 使用 pip 安装模块后,可能需要执行 pyenv rehash 更新数据库;
- yenv version #显示当前使用的
- Python pyenv which python #显示当前Python的安裝路径
- pyenv global <version> #设置默认的Python版本
- pyenv local <version> #在当前路径创建一个.python-version,以后进入这个目录自动切换为该版本
- pyenv shell <version> #在当前shell的session中启用某个Python版本,优先级高于global,local
参考https://github.com/yyuu/pyenv
虚拟环境的搭建
1.1.1介绍
virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用
1.1.2安装
sudo apt-get install python-virtualenv
1.1.3 使用方法
virtualenv [虚拟环境名称]
如,创建**ENV**的虚拟环境
virtualenv ENV
默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境
virtualenv --no-site-packages [虚拟环境名称]
启动虚拟环境
cd ENV
source ./bin/activate
注意此时命令行会多一个(ENV),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。
退出虚拟环境
deactivate
在虚拟环境安装Python套件
Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:
pip install [套件名称]
如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:
export PIP_REQUIRE_VIRTUALENV=true
或者让在执行pip的时候让系统自动开启虚拟环境:
export PIP_RESPECT_VIRTUALENV=true
1.2 Virtualenvwrapper
1.2.1介绍
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
1. 将所有虚拟环境整合在一个目录下
2. 管理(新增,删除,复制)虚拟环境
3. 切换虚拟环境
4. ...
1.2.2 安装
sudo easy_install virtualenvwrapper
此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。
1.创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
2.在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs
3.在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh
4.运行: source ~/.bashrc
1.2.3 使用
此时virtualenvwrapper就可以使用了。
点击(此处)折叠或打开
1. 列出虚拟环境列表
2. workon
3.
4. 也可以使用
5. lsvirtualenv
6.
7. 新建虚拟环境
8. mkvirtualenv [虚拟环境名称]
9.
10. 启动/切换虚拟环境
11. workon [虚拟环境名称]
12.
13. 删除虚拟环境
14. rmvirtualenv [虚拟环境名称]
15.
16. 离开虚拟环境
17. deactivate
pyenv 安装python 3.7.0时,报编译出错,需要:yum -y install libffi-devel。 别的依赖包基本都装了,所以添加这一个就行了。有的还需要:
yum upgrade