用途:开发的时候经常使用不同的python版本来写代码,但是在Linux的公共环境下很容易出现问题,pyenv可以设置不同用户,不同目录,甚至不同子目录下面不同的python环境
1安装相关包
yum install -y git gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel
2新建一个用户和安装pyenv
useradd pyenv
su - pyenv
下载安装pyenv并设置环境
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash vim .bash_profile增加环境变量 export PATH="/home/python/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" source . /home/python/.bash_profile 或. . /home/python/.bash_profile
3查看系统上面的python版本有几个
pyenv versions //这里由于是原始环境,所以只有一个系统的版本 system
4安装指定版本
pyenv install --list
[pyenv@localhost ~]$ pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
.............. 此处省略很多
pyenv install 3.5.3 -v //这里只能选择安装上面命令结果出现的东西,pyenv install Python-3.5.3是错误写法
。。。一般由于网络问题,下载让你等的头疼,可以先下载下来。。。。
cd ~/.pyenv
make cache //建一个缓存目录,并将包放入这个目录里面
[pyenv@localhost .pyenv]$ ls cache/
Python-3.5.3.tar.xz Python-3.5.3.tgz //由于我使用pyenv install 3.5.3 -v命令的时候显示的是安装Python-3.5.3.tar.xz ,所以上传这一个包就可以了
再一次执行 pyenv install 3.5.3 -v 这次是飞快
查看版本
pyenv versions
[pyenv@localhost ~]$ pyenv versions
* system //*表示当前在使用的版本,我这个系统是7.3的,所以python版本为2.7.5
3.5.3 (set by /home/pyenv/.python-version)
4测试使用pyenv设置不同的版本
新建一个目录
mkdir hehe/projects -p
cd hehe/projects
mkdir test
cd test
vi .python-version //当前文件的路径是/home/pyenv/hehe/projects/test/.python-vesion
[pyenv@localhost test]$ cat .python-version
3.5.3
[pyenv@localhost test]$ cd ..
[pyenv@localhost projects]$ python -V
Python 2.7.5
比较版本的使用---》版本的不同
pyenv@localhost projects]$ python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> hehe='你好'
>>> hehe
'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> exit()
[pyenv@localhost projects]$ cd test
[pyenv@localhost test]$ python
Python 3.5.3 (default, May 7 2018, 17:31:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> hehe='你好'
>>> hehe
'你好'
上面2和3版本的不同就是2默认编码是ascii 3的默认编码是utf-8
下面第二次测试,-----》子目录的继承
cd /home/pyenv/hehe/projects/test
mkdir test1
[pyenv@localhost test1]$ python -V //此处是继承了test目录的版本
Python 3.5.3
[pyenv@localhost test1]$ vi .python-verion
[pyenv@localhost test1]$ cat .python-verion //修改为系统的版本
system
[pyenv@localhost test1]$ python -V
Python 2.7.5
5 总结:
(1)pyenv的设置是子目录继承父目录的python版本,如果想与众不同,就建一个.python-version的文件写入你需要的版本,前提是这个版本已经安装了
(2)其他的命令,如 pyenv global,local,shell 这些命令参考就好,请慎用,关键是.python-version文件
其他:一个问题
[pyenv@localhost ~]$ python -V
pyenv: version `ttt' is not installed (set by /home/pyenv/.python-version)
出现这样的问题,一般是你的这个版本的虚拟环境删除了,但是在.python-version文件中还存在,修改为你存在的版本就好了
最后:整个文档就一个东西 .python-version .python-version .python-version 其他都是浮云