pyenv python 版本控制
经常遇到这样的情况:
系统自带的Python是2.x,自己需要Python 3.x,此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存,pyenv就是这样一个Python版本管理器。
- 配置当前用户的python的版本
- 配置当前shell的python版本
- 配置某个项目(目录及子目录)的python版本
- 配置多个虚拟环境
yum -y installgcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel git
The automatic installer
Visit my other project: https://github.com/pyenv/pyenv-installer
git clone --depth 1"git://github.com/pyenv/pyenv.git" "${HOME}/.pyenv"
git clone --depth 1"git://github.com/pyenv/pyenv-doctor.git" "${HOME}/.pyenv/plugins/pyenv-doctor"
git clone --depth 1"git://github.com/pyenv/pyenv-installer.git" "${HOME}/.pyenv/plugins/pyenv-installer"
git clone --depth 1"git://github.com/pyenv/pyenv-update.git" "${HOME}/.pyenv/plugins/pyenv-update"
git clone --depth 1"git://github.com/pyenv/pyenv-virtualenv.git""${HOME}/.pyenv/plugins/pyenv-virtualenv"
git clone --depth 1"git://github.com/pyenv/pyenv-which-ext.git" "${HOME}/.pyenv/plugins/pyenv-which-ext"
echo 'export PATH="/home/python/.pyenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
#查看pyenv版本
pyevn -v
#更新pyenv
pyenv update
$ pyenv help
Usage: pyenv <command> [<args>] Some useful pyenv commands are:
commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install a Python version using python-build
uninstall Uninstall a specific Python version
rehash Rehash pyenv shims (run this after installing executables)
version Show the current Python version and its origin
versions List all Python versions available to pyenv
which Display the full path to an executable
whence List all Python versions that contain the given executable See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
$pyenv install --help
Usage: pyenv install [-f] [-kvp] <version>
pyenv install [-f] [-kvp] <definition-file>
pyenv install -l|--list
pyenv install --version -l/--list List all available versions
-f/--force Install even if the version appears to be installed already
-s/--skip-existing Skip if the version appears to be installed already
python-build options: -k/--keep Keep source tree in $PYENV_BUILD_ROOT after installation
(defaults to $PYENV_ROOT/sources)
-p/--patch Apply a patch from stdin before building
-v/--verbose Verbose mode: print compilation status to stdout
--version Show version of python-build
-g/--debug Build a debug version For detailed information on installing Python versions with
python-build, including a list of environment variables for adjusting
compilation, see: https://github.com/pyenv/pyenv#readme $ pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
………………
$ pyenv install 3.6.4 Downloading Python-3.6.4.tar.xz...
-> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Installing Python-3.6.4...
Installed Python-3.6.4 to /home/python/.pyenv/versions/3.6.4 $ pyenv install 3.5.4
Downloading Python-3.5.4.tar.xz...
-> https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz
Installing Python-3.5.4...
Installed Python-3.5.4 to /home/python/.pyenv/versions/3.5.4
#查看可使用的版本,前面带*表示当前使用的版本
pyenv versions
#查看当前使用的版本
pyenv version $ pyenv versions
* system (set by /home/python/.pyenv/version)
3.5.4
3.6.4
$ pyenv version
system (set by /home/python/.pyenv/version)
- pyenv global <version>
- pyenv shelll <version>
- pyenv local <version>
$ pyenv versions
* system
3.5.4
3.6.4 (set by /home/python/.pyenv/version)
$ python -V
Python 2.6.6
$ pyenv global 3.6.4
$ pyenv versions
system
3.5.4
* 3.6.4 (set by /home/python/.pyenv/version)
$ python -V
Python 3.6.4
$ python -V
Python 3.6.4
$ exit
logout
#重新登录
$ python -V
Python 3.6.4
$ python -V
Python 2.6.6 $ pyenv versions
* system (set by /home/python/.pyenv/version)
3.5.4
3.6.4
$ pyenv shell 3.5.4
$ python -V
Python 3.5.4
$ pyenv versions
system
* 3.5.4 (set by PYENV_VERSION environment variable)
3.6.4
$ pyenv shell --unset
$ mkdir project
$ cd project
$ pyenv local 3.6.4
$ pyenv versions
system
3.5.4
* 3.6.4 (set by /home/python/project/.python-version) $ python -V
Python 3.6.4
$ mkdir p_a&& cd p_a $ python -V
Python 3.6.4
$ pyenv versions
system
3.5.4
* 3.6.4 (set by /home/python/project/.python-version)
$ mkdir ../p_b&& cd ../p_b $ pyenv local system
$ python -V
Python 2.6.6
$ pyenv versions
* system (set by /home/python/project/p_b/.python-version)
3.5.4
3.6.4
$ which python
~/.pyenv/shims/python
$ which python3
~/.pyenv/shims/python3
$ which pip3
~/.pyenv/shims/pip3
#!/usr/bin/env bash
set -e
[ -n "$PYENV_DEBUG" ] && set -x program="${0##*/}"
if [[ "$program" = "python"* ]]; then
for arg; do
case "$arg" in
-c* | -- ) break ;;
*/* )
if [ -f "$arg" ]; then
export PYENV_FILE_ARG="$arg"
break
fi
;;
esac
done
fi export PYENV_ROOT="/home/python/.pyenv"
exec "/home/python/.pyenv/libexec/pyenv" exec "$program" "$@"
- 如果PYENV_VERSION这个变量否存在,则使用这个变量里的版本;这个变量是由pyenv shell <version>配置的;
- 按照往父目录查找的顺序查找直到根目录,第一个被查找到的.python-version文件作为版本文件,其指定的版本作为使用的python版本;这个文件使用pyenv local <version>配置
- $(pyenv root)/version 这个文件若存在,则使用这个文件里制定的版本作为python版本;若不存在,则使用系统的版本;这个文件使用pyenv global <version>配置
- 如果以上变量或文件都没有找到,就按照系统默认制定的python版本了。
1.安装pyenv:
1.>安装依赖包: yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y 2.>安装pyenv包: git clone https://github.com/pyenv/pyenv.git ~/.pyenv 3.>设置环境变量: #vim ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)" #source ~/.bashrc
#即是启动语句,重启系统执行这条语句
exec $SHELL
2.查看pyenv支持的python版本,同时也是检验有没有安装成功:
|
1
|
pyenv install --list |
3.查看当前pyenv可检测到的所有版本,处于激活状态的版本前以 * 标示.
|
1
2
3
4
|
[root@localhost ~]# pyenv versions system 3.5.1* 3.5.3 (set by /root/.pyenv/version) |
4.查看当前处于激活状态的版本,括号中内容表示这个版本是由哪条途径激活的(global、local、shell)
|
1
2
|
[root@localhost ~]# pyenv version 3.5.3 (set by /root/.pyenv/version) |
5.将3.5.1作为全局变量,使用如下命令.
|
1
2
3
|
[root@localhost ~]# pyenv global 3.5.1[root@localhost ~]# pyenv version3.5.1 (set by /root/.pyenv/version) |
6.设置面向程序的本地版本,通过将版本号写入当前目录下的.python-version 文件的方式。
#在本地创建目录ops,执行pyenv local 3.5.3后,只有在这个目录是3.5.3的版本,别的目录使用默认的版本.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@localhost ~]# python -VPython 3.5.1[root@localhost ~]# pyenv versions system* 3.5.1 (set by /root/.pyenv/version) 3.5.3[root@localhost ~]# [root@localhost ~]# mkdir ops[root@localhost ~]# cd ops/[root@localhost ops]# pyenv local 3.5.3[root@localhost ops]# python -VPython 3.5.3[root@localhost ops]# cd ..[root@localhost ~]# python -VPython 3.5.1 |
7.安装你需要的Python版本(如3.4.0):
|
1
2
3
|
pyenv install 3.4.0 -v#小技巧,可以在/root/.pyenv/目录下创建cache目录,将下载好的Python-3.4.0的包放在该目录下,就可以直接执行安装,而不需要下载,节省下载时间. |
8.安装完成之后需要对数据库进行更新:
|
1
|
pyenv rehash |
9.卸载python 3.4.0版本.
|
1
|
pyenv uninstall 3.4.0 |
pyenv python 版本控制的更多相关文章
- pyenv - python版本管理
1. 安装pyenv brew install pyenv 2. 安装python其它版本(如:python 3.6.7) pyenv install --list #查看可以安装的python版本 ...
- pyenv python 多版本管理工具
pyenv fork 自rbenv 以及ruby-build ,然后修改为转为python 使用 venv 以及virtualenv 解决了版本选择的问题,pyenv 同时为我们解决 了python ...
- centos下python多版本管理(pyenv+python+virtualenv+ipython)
pyenv是个多版本python管理器,可以同时管理多个python版本共存,如pypy,miniconde等等 1 环境准备 安装相关软件和pyenv1.1 安装相关软件yum install -y ...
- Python自动化运维之1、Python入门
Python简介 python是吉多·范罗苏姆发明的一种面向对象的脚本语言,可能有些人不知道面向对象和脚本具体是什么意思,但是对于一个初学者来说,现在并不需要明白.大家都知道,当下全栈工程师的概念很火 ...
- 使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境
在上一篇博客中,我介绍了如何在ubutnu 18.04中安装pyenv.这一次我将介绍如何使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境. 0.相关命令 首先使用pye ...
- pyenv 配置python虚拟环境
安装pyenv环境 yum -y install git yum install gcc make patch gdbm-devel openssl-devel sqlite-devel readli ...
- pyenv虚拟环境管理python多版本和软件库
可能大家在日常工作中会遇到这么个问题,现在基本的linux系统都是自带老版本的python2.7.x版本,我又不想用老版本,但直接升级可能会出问题,或是依赖老版本的程序就运行不了,有没办法能安装3.x ...
- Python全栈-magedu-2018-笔记1
第一章 - Python 环境搭建 操作系统准备 准备Linux最小系统即可. 如果在虚拟机中克隆,MAC地址会变. 这里使用CentOS 6.5+ Pyenv 安装 安装git yum instal ...
- python版本管理(python环境隔离)
这将是一篇比较短的文章. 我发文向来注重文章质量,营养不够的宁可不发,但是我相信很多人需要这篇文章. 之所以要去搞清楚这个问题,是我在把 vscode 的 inspector 设置为 pipenv 生 ...
随机推荐
- 北京太速科技股份有限公司产品手册V201903020
如果您无法正常查看,请点击在线浏览 如果您无法正常查看,请点击在线浏览 了解更多产品信息,请扫描二维码,期待您的关注 ...
- [转载]转一篇Systemverilog的一个牛人总结
原文地址:转一篇Systemverilog的一个牛人总结作者:dreamylife Systemverilog 数据类型 l 合并数组和非合并数组 1)合并数组: 存储方式是连续的,中间没 ...
- VMware Workstation 卸载时卡在“正在卸载网络驱动程序(Virtual Network Editor夯死)”
出现此种问题,以下方式均无法成功卸载: 控制面板-卸载程序(Virtual Network Editor 未响应) Geek 卸载VMware Workstation(Virtual Network ...
- CentOS7 添加新用户并授权 root 权限
参考文章:CentOS 7中添加一个新用户并授权 # root 用户操作 $ 普通用户操作 创建用户 # adduser USERNAME # passwd USERNAME (输入密码) 授权 ro ...
- VB中preserve的用法
注:本文转载自:http://zhidao.baidu.com/question/161401549.html ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private. ...
- spring boot filter -Autowired
需求:在SpringBoot实现拦截器,并且需要自定义的filter类型自动装配一些对象 自定义的过滤器类 public class SessionExpireFilter implements Fi ...
- windows 10 x64系统 jdk1.7、jdk1.8 切换(jdk为exe安装版本)
电脑先安装的1.7,后来安装1.8,改JAVA_HOME为1.8后cmd->java.javac.java -version可用1.8 后想改为1.7,更改环境变量(步骤1)后cmd->j ...
- bzoj4165 矩阵 堆维护多路归并
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4165 题解 大概多路归并是最很重要的知识点了吧,近几年考察也挺多的(虽然都是作为签到题的). ...
- 快照方式备份MySQL数据库及举例
快照方式备份MySQL数据库及举例 作者: 红豆殺 日期: 2011 年 03 月 17 日发表评论7条评论查看评论 一.创建逻辑卷 依照如下连接的文档创建一个逻辑卷 http://www.178 ...
- 过采样算法之SMOTE
SMOTE(Synthetic Minority Oversampling Technique),合成少数类过采样技术.它是基于随机过采样算法的一种改进方案,由于随机过采样采取简单复制样本的策略来增加 ...