virtualenv可以搭建虚拟且独立的python环境,可以使每个项目环境与其他项目独立开来,保持环境的干净,解决包冲突问题。
首先我们可以用pyenv 安装多个python 版本, 比如安装了2.5, 2.6, 3.3 三个版本。 用户可以随意切换当前默认的python版本。 但这时候, 每个版本的环境仍是唯一的, 如果我们想在环境中安装一些库的话, 还是会导致这个版本的环境被修改。 这个时候, 如果我们用virtual env去建立虚拟环境, 就可以完全保证系统路径的干净。无论你在虚拟环境中安装了什么程序, 都不会影响已安装版本的系统环境。
CentOS下安装(write at 20170117):
以CentOS版本6.7
为例(CentOS的其他版本也适用,Ubuntu也适用,只要把yum
命令改成apt-get
就可以了,其他都一样)
1. 安装依赖包
yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bzip2-devel readline-devel
[root@localhost willie]# yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bzip2-devel readline-devel
2. 安装pyenv(pyenv-virtualenv插件会自动安装)
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
[willie@localhost ~]$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
在
文件里加入下面三行/etc/profile.d/pyenv.sh
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
然后运行:
source /etc/profile.d/pyenv.sh
[willie@localhost ~]$ vim /etc/profile.d/pyenv.sh
[willie@localhost ~]$ source /etc/profile.d/pyenv.sh
使用篇
1. pyenv使用指南(OS X和Linux命令都通用)
pyenv versions
查看系统的上安装的Python版本。 其中前面的*
表示当前工作目录正在使用的版本,其中 的system
表示系统自带的 Python 版本:
pyenv versions
[willie@localhost ~]$ pyenv versions
* system (set by /home/willie/.pyenv/version)
2.
查看可安装的Python版本:
pyenv install --list
[willie@localhost ~]$ pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
。。。以下省略五千字
3.
pyenv install <version>
安装其他版本的Python。例如安装2.7.13和3.6.0版本:
pyenv install 2.7.13
pyenv install 3.6.0
pyenv versions #可以看到3个版本
[willie@localhost ~]$ pyenv install 2.7.13
Downloading Python-2.7.13.tar.xz...
-> https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
Installing Python-2.7.13...
Installed Python-2.7.13 to /home/willie/.pyenv/versions/2.7.13
[willie@localhost ~]$ pyenv install 3.6.0
Downloading Python-3.6.0.tar.xz...
-> https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz
Installing Python-3.6.0...
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Installed Python-3.6.0 to /home/willie/.pyenv/versions/3.6.0
[willie@localhost ~]$ pyenv versions
* system (set by /home/willie/.pyenv/version)
2.7.13
3.6.0
4、pyenv local <version>
切换python版本。
示例:
$ cd #到home目录
$ mkdir python36 #创建python36的工作目录
$ cd python36
$ pyenv local 3.6.0 #使当前工作目录使用python3.6.0版本
$ python -V #查看一下当前目录用python的版本,确实是3.5.1
Python3.6.0
$ pip -V #查看一下pip版本,是3.6的pip
pip 9.0.1 from /home/willie/.pyenv/versions/3.6.0/lib/python3.6/site-packages (python 3.6)
$ cd #回到home目录
$ mkdir python2713 #创建python2.7.13的工作目录
$ cd python2713
$ pyenv local 2.7.13 #使当前工作目录使用python3.4.4版本
$ python -V #查看一下当前目录用python的版本,确实是3.5.1
Python 2.7.13
$ pip -V #查看一下pip版本,是2.7的pip
pip 9.0.1 from /home/willie/.pyenv/versions/2.7.13/lib/python2.7/site-packages (python 2.7)
其他版本的工作目录创建方法类似(如果是用系统自带版本,用
pyenv local system
即可使当前工作目录使用系统自带的Python2.7.10,不过一般很少用系统自带的Python)
2. pyenv-virtualenv使用指南
pyenv-virtualenv是用来创建一个干净的虚拟Python环境的命令,通常在创建干净的新项目时候使用。使用方法如下:
1.创建虚拟环境--pyenv virtualenv 版本号 虚拟环境名
。
$ pyenv virtualenv 3.6.0 env360
- 创建项目,让项目使用干净的Python3.5.1的虚拟环境:
$ mkdir myproject
$ cd myproject
$ pyenv local venv-3.5.1
pyenv-virtualenv: deactivate
pyenv-virtualenv: activate venv-3.5.1
此后,我们就会发现:只要我们进入myproject目录,就会自动激活virtualenv,退出myproject目录,就会关闭virtualenv。
如果要关闭自动激活,可以运行命令pyenv deactivate
,要重新启用的话,运行pyenv activate 虚拟环境名
。
reference:http://www.jianshu.com/p/1842a363257c
后记(write at 20170217),已经过了一个月,这段时间里,基本没使用过pyenv,做项目都是直接virtualenv、source bin/activate、deactivate,买了两本书《python web 开发实战》(董伟明)、《python 项目开发实战》(日),书里都是用virtualenv,没见提到pyenv的。所以,暂时不打算使用pyenv了。
另外,按之前的步骤安装完pyenv并设置path,重启后每次打开teminal,都会出现bash:pyenv:command can not find的消息,看着挺碍眼的,每次都是export PATH=$PATH:~/.pyenv/bin手动消除它,因为今天决定暂时不再用pyenv,所以把 /etc/profile ~/.bash_profile ~/.bashrc /etc/profile.d/pyenv.sh 等文件里的pyenv相关行都注释掉,然后重启电脑,再打开终端就不再有这个烦人的消息,整个世界清净赛了。