本文转载自链接http://www.jianshu.com/p/1842a363257c

                             Centos7下,Python多版本管理器pyenv和虚拟环境pyenv-virtualenv的安装配置

       pyenv 是一款特别好用的Python版本管理器,程序员可以建立不同的目录,在不同的目录里分别运行不同版本的Python, 并且互不影响,安装的包也互不影响。

       pyenv-virtualenv 是pyenv的一个plugin(插件),可以用来创建基于不同Python版本的干净的虚拟环境。

1.安装依赖包   

yum install readline readline-devel readline-static
yum install openssl openssl-devel openssl-static
yum install sqlite-devel
yum install bzip2-devel bzip2-libs
yum install git

2.安装pyenv

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

配置环境变量

~/.bash_profile环境变量配置加入下面三行

export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"


升级:可以用命令pyenv update。

卸载:直接删除目录rm -rf ~/.pyenv,然后把~/.bash_profile环境变量配置中的三行删掉

需要使环境变量生效,
运行命令exec "$SHELL",如果还没有效果,就退出终端,重新打开。



1. pyenv使用指南(OS X和Linux命令都通用)

  1. pyenv versions查看系统的上安装的Python版本。 其中前面的*表示当前工作目录正在使用的版本,其中 的 system表示系统自带的 Python 版本:

$ pyenv versions
*system (set by /Users/yulongjun/.pyenv/version)
  1. pyenv install 安装其他版本的Python。例如安装3.5.1和3.4.4版本:

$ pyenv install 3.5.1
$ pyenv install 3.4.4
$ pyenv versions #可以看到3个版本
*system (set by /Users/yulongjun/.pyenv/version)
 3.4.4
3.5.1

如果pyenv install安装慢的话,可以用export v=3.7.0 | wget http://mirrors.sohu.com/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/; pyenv install $v

如果报错ModuleNotFoundError: No module named '_ctypes'。   yum install libffi-devel -y

2.pyenv local 切换python版本。
示例:

$ cd                   #到家目录$ mkdir python35      #创建python35的工作目录$ cd python35
$ pyenv local 3.5.1    #使当前工作目录使用python3.5.1版本$ python -V            #查看一下当前目录用python的版本,确实是3.5.1Python3.5.1
$ pip -V               #查看一下pip版本,是3.5的pippip 7.1.2 from /usr/local/var/pyenv/versions/3.5.1/lib/python3.5/site-packages (python 3.5)
$ cd                   #回到家目录$ mkdir python34     #创建python3.4的工作目录$ cd python34
$ pyenv local 3.4      #使当前工作目录使用python3.4.4版本$ python -V            #查看一下当前目录用python的版本,确实是3.5.1Python 3.4.4
$ pip -V               #查看一下pip版本,是3.4的pippip 7.1.2 from /usr/local/var/pyenv/versions/3.4.4/lib/python3.4/site-packages (python 3.4)

其他版本的工作目录创建方法类似(如果是用系统自带版本,用pyenv local system即可使当前工作目录使用系统自带的Python2.7.10,不过一般很少用系统自带的Python)

2. pyenv-virtualenv使用指南

pyenv-virtualenv是用来创建一个干净的虚拟Python环境的命令,通常在创建干净的新项目时候使用。使用方法如下:

1.创建虚拟环境--pyenv virtualenv 版本号 虚拟环境名。

$ pyenv virtualenv 3.5.1 venv-3.5.1
  1. 创建项目,让项目使用干净的Python3.5.1的虚拟环境:

$ mkdir myproject
$ cd myproject
$ pyenv activate venv-3.5.1

$  pyenv deactivate

此后,我们就会发现:只要我们进入myproject目录,就会自动激活virtualenv,退出myproject目录,就会关闭virtualenv。

如果要关闭自动激活,可以运行命令pyenv deactivate,要重新启用的话,运行pyenv activate 虚拟环境名。

注意:需要重新打开shell。


requirements.txt可以通过pip命令自动生成和安装,这种情况更适用于此项目是单独的虚拟python环境
生成requirements.txt文件

pip freeze > requirements.txt

安装requirements.txt依赖


这是因为python的输出有缓冲,导致nohup.out并不能够马上看到输出。

python 有个-u参数,使得python不启用缓冲。

nohup python -u test.py > nohup.out 2>&1 &

pip install -r requirements.txt