python虚拟环境 pyenv_Python多版本管理和虚拟环境维护(pyenv, pyenv-virtualenv)
前言
需求
在日常开发的过程中经常会遇到以下场景:
系统预装Python是2.6,项目需要Python2.7中的新特性
由于python的版本割裂, Python3 和 Python2想要共存
不通项目对于同一个依赖包的版本要求不同,希望基于项目的环境独立
virtualenv, virtualenvwrapper等工具解决了上述问题中一的部分,也有着自身局限和不够优雅的地方,例如,将不同的 $PATH 植入不同的shell这种高耦合的工作方式。
本篇的主题pyenv可以帮助你以更pythonic的方式管理多个版本python,创建和维护不同的虚拟环境, 并提供方便的切换方法。 pyenv受启发于ruby环境管理工具rbenv
原理
pyenv在$PATH的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。
安装
安装包依赖(编译python)
Debian/Ubuntu
apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils
macOS
brew install openssl readline xz
CentOS/Fedora
yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel
安装pyenv
1. 获取源文件
安装工具(推荐)
macOS
brew update && brew install pyenv
Linux
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
手动
选择安装到$HOME/.pyenv目录(但你可以在某处安装其他)。
$ cd && git clone git://github.com/yyuu/pyenv.git .pyenv
2. 配置环境变量
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
shell 配置文件(~/.bash_profile)依不同 Linux 而需作修改
~/.bash_profile (General)
~/.zshenv (Zsh)
~/.bashrc (Ubuntu)
3. 重启shell生效
exec $SHELL
使用
安装/卸载某个版本的python
可以先查看一下有哪些版本的python 可以安装
pyenv install --list
Available versions:
2.1.3
2.2.3
2.3.7
2.4
...
2.7.12
安装
安装文件很大, 如果由于网络的问题,总是连接中断或者下载很久导致安装失败。此时可以先从官方网站下载安装包,然后放在$PYENV_ROOT/cache文件夹中(该目录默认不存在,用户要自行新建),注意,从官网下载的文件后缀名需要由xxx.tgz改为xxx.tar.gz。然后在pyenv install 此版本,pyenv会自动先从此文件夹中搜索
pyenv install -v 2.7.1
卸载
pyenv uninstall 2.7.1
显示已安装python版本
*表示当前的python版本
system 代表当前系统的python版本
pyenv versions
system (set by /root/.pyenv/version)
2.5.6
2.6.8
*3.3.3
jython-2.5.3
pypy-2.2.1
不同版本的python切换
pyenv global
设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
pyenv global 3.4.0 ( ~/.pyenv/version )
pyenv local
设置面向程序的本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。若找不到,就用 global 版本。
pyenv local 2.7.3 ( /usrl/local/project/.python-version )
pyenv shell
设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。这个版本的优先级比 local 和 global 都要高。--unset 参数可以用于取消当前 shell 设定的版本。
pyenv shell pypy-2.2.1 ( $PYENV_VERSION )
pyenv shell --unset
切换后python版本确认
$ python -V
Python 2.7.10
显示当前pyenv使用的环境
$ pyenv version
三种可能的输出
system (set by /usr/local/var/pyenv/version) # global
2.7.11 (set by /usrl/local/project/.python-version) # local
3.5.2 (set by PYENV_VERSION environment variable) # shell
pyenv-virtualenv 维护虚拟环境
pyenv virtualenv是pyenv的插件,为Linux系统上的Python virtualenvs提供pyenv virtualenv命令。使用起来非常直观简单
配置
目前pyenv-virtualenv已经包含在pyenv插件中, 无需手动安装,可以直接使用。需要注意的是需要执行如下命令,使配置生效
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
创建/删除虚拟环境
pyenv virtualenv orignal-version target-name
pyenv virtualenv 3.5.2 env352
pyenv virtualenv-delete env352
上面创建了一个名为env352 的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/
切换python虚拟环境
切换的命令和virtualenv基本保持一致
pyenv activate env352
pyenv deactivate
python虚拟环境 pyenv_Python多版本管理和虚拟环境维护(pyenv, pyenv-virtualenv)相关推荐
- python搭建环境是什么_python虚拟环境是什么?python虚拟环境的介绍
本篇文章给大家带来的内容是关于python虚拟环境是什么?python虚拟环境的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么是Python的虚拟环境 记得在学校写代码的时 ...
- python学习总结----时间模块 and 虚拟环境(了解)
python学习总结----时间模块 and 虚拟环境(了解) time- sleep:休眠指定的秒数(可以是小数) - time:获取时间戳# 获取时间戳(从1970-01-01 00:00:00到 ...
- 快速运行python虚拟环境_快速入门Python 最新最流行的pipenv虚拟环境
2018的PyCon把最新型最先进的Python虚拟环境pipenv吵得火热.看了下介绍感觉真的很好用,它在virtualenv的基础上包装了一些更便捷的功能,解决了很多很多virtualenv欠缺的 ...
- 【Python配置】使用pyenv与virtualenv搭建单机多版本python多虚拟环境开发
用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境 pyenv可以帮助你在一台开发机上建立多个版本的python环境, 并提供方便的切换方法. virtualenv则提供 ...
- python虚拟环境管理 —— 以 workon 切换虚拟环境
python虚拟环境管理 Linux Windows Linux 1.安装 virtualenvwrapper $ pip3 install virtualenvwrapper 2.创建目录存放虚拟环 ...
- Python自学成才之路 玩转虚拟环境
Python自带的那个环境是系统环境,同一个项目的不同版本可能会依赖不同版本的依赖包,如果都放在系统环境下会使系统环境变得很庞大,同时操作起来也不太方便,如果给每个项目都单独配置一个环境,各个项目之间 ...
- 激活conda虚拟环境后,无法调用虚拟环境中的python版本(或无法调用当前虚拟环境的包)
今天使用conda创建了一个新环境(python3.8),命名为wj: (base) [root@cqu-3 ~]# conda env list # conda environments: # ba ...
- 使用python虚拟环境,为什么要激活虚拟环境
文章目录 使用python虚拟环境,为什么要激活虚拟环境 前置基础 python 模块和包的概念 Python 模块 (Module) Python中的包 python依赖引入机制(搜索路径).PYT ...
- Python直接复制已有的venv虚拟环境以创建新的虚拟环境
Python venv创建的虚拟环境复制到其他路径,如何断开与原始虚拟环境的连接,成为一个全新的虚拟环境,且两个虚拟环境之间的更新互不影响? 1.软件环境⚙️ 2.问题描述
- 怎么进入python 的venv文件夹_python虚拟环境模块venv使用及示例
相信只要学习python的同学对于虚拟环境这个概念肯定不会太陌生,虚拟环境指的是一个个单独隔离的python开发环境.各个虚拟环境之间互不干扰,都有自己独立的开发包.就像是在电脑上装了很多个虚拟机,每 ...
最新文章
- 黄聪:PHP生成折线图、饼图、表格、图表插件控件pChart
- 将DataTable中的数据一次性提交到数据库中
- 大数据入门基础教程系列
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- 沙漠上不小心挖了个洞,让这个地狱之门般的巨坑,燃烧了50年
- nios ii小实验——第一个demo指导书
- 年初新立Flag,新华三解决方案部做了点儿啥?
- 关于ibatis.net框架(NPetshop学习)
- OpenGL基础25:多光源(附简单GLSL配置)
- linux启动http服务
- pom文件导入maven依赖
- matlab中的多行注释
- TA_Lib库指标中文说明
- Ogre 天龙八部地形管理器(2) --- 地形和静态对象的加载
- STM32-端口复用和重映射
- 云计算设计模式翻译(五):Compute Resource Consolidation Pattern
- 西雅图Oracle公寓租赁,在西雅图租房必须知道的那些事
- 抖音和tiktok是什么关系?TikTok和抖音差别大吗?
- 哥白尼气候数据ERA5数据集——大气数据研究
- JAVA小项目(1)——租车系统