对Python 两大环境管理神器 pyenv 和 virtualenv详解
作者:qhh0205 发布时间:2022-05-02 11:27:40
简介
pyenv 是一个开源的 Python 版本管理工具,可以轻松地给系统安装任意 Python 版本,想玩哪个版本,瞬间就可以切换。有了 pyenv,我们不需要再为系统多版本 Python 共存问题而发愁,也不用为手动编译安装其他 Python 版本而浪费时间,只需要执行一条简单的命令就可以切换并使用任何其他版本,该工具真正地做到了开箱即用,简单实用。
virtualenv 是一个用来创建完全隔离的 Python 虚拟环境的工具,可以为每个项目工程创建一套独立的 Python 环境,从而可以解决不同工程对 Python 包,或者版本的依赖问题。假如有 A 和 B 两个工程,A 工程代码要跑起来需要 requests 1.18.4,而 B 工程跑起来需要 requests 2.18.4,这样在一个系统中就无法满足两个工程同时运行问题了。最好的解决办法是用 virtualenv 给每个工程创建一个完全隔离的 Python 虚拟环境,给每个虚拟环境安装相应版本的包,让程序使用对应的虚拟环境运行即可。这样既不影响系统 Python 环境,也能保证任何版本的 Python 程序可以在同一系统中运行。
最佳实践:使用 pyenv 安装任何版本的 Python,然后用 virtualenv 创建虚拟环境时指定需要的 Python 版本路径,这样就可以创建任何版本的虚拟环境,这样的实践真是极好的!
pyenv 的安装及使用
1. 安装
将 pyenv 安装到 ~/.pyenv 目录(当然你可以安装到任意其他路径)
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
配置环境变量(我的 Shell 是 zsh,如果是 bash,请添加到 ~/.bashrc)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
添加 pyenv 初始化(我的 Shell 是 zsh,如果是 bash,请添加到 ~/.bashrc)
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
使当前 Shell 配置生效,完成安装
exec $SHELL
source ~/.zshrc
2. 使用
查看有哪些 Python 版本可以安装
pyenv install --list
安装某个 Python 版本
pyenv install -v 3.6.4
查看当前 Python 版本情况(* 表示系统当前的 Python 版本,system表示系统初始版本)
$ pyenv versions
system
2.6.7
* 3.6.4 (set by /Users/haohao/.pyenv/version)
切换 Python 版本(切换之后查看当前版本)
$ pyenv global 3.6.4
$ pyenv versions
system
* 3.6.4 (set by /Users/haohao/.pyenv/version)
$ python -V
Python 3.6.4
卸载某个 Python 版本
pyenv uninstall 3.6.4
virtualenv 的安装及使用
1. 安装
sudo pip install virtualenv
2. 使用
下面我们使用 virtualenv 创建一个完全隔离的 Python 虚拟环境:
1.新建一个目录(一般用来用作工程路径)
$ mkdir myproject
2.进入目录创建一个完全独立干净的虚拟环境
如果 virtualenv 后面不加任何参数,那么默认创建的虚拟环境的 Python 版本是系统当前版本,如果要创建其他版本,可以使用 -p 参数指定其他版本的 python 可执行文件路径。可执行文件可以在上一步安装的 pyenv 的 ~/.pyenv/versions 路径找到,该路径是 pyenv 管理的所有 Python 版本路径。
# 使用系统当前的 Python 版本创建虚拟环境
$ virtualenv venv
New python executable in /Users/haohao/PycharmProjects/myproject/venv/bin/python
# 创建虚拟环境时指定 Python 版本
$ virtualenv -p ~/.pyenv/versions/2.6.7/bin/python venv
Running virtualenv with interpreter /Users/haohao/.pyenv/versions/2.6.7/bin/python
New python executable in /Users/haohao/PycharmProjects/myproject/venv/bin/python
Installing setuptools<37, pip, wheel<0.30...done.
3.激活创建的虚拟环境并使用
可以看出当前虚拟环境版本已经是 Python 2.6.7 了,而且所在路径确实是在上一步创建的虚拟环境路径。接下来使用 pip 安装的任何包都会安装在虚拟环境目录里面,不会安装在系统标准目录,从而保证当前环境是绝对干净的,对于系统是完全隔离的。
$ source venv/bin/activate
$ which python
/Users/haohao/PycharmProjects/myproject/venv/bin/python
$ python -V
Python 2.6.7
4.退出虚拟环境,回到系统版本
$ deactivate
来源:https://blog.csdn.net/qianghaohao/article/details/79681187


猜你喜欢
- go设置GOROOT和GOPATHgo 里面有两个非常重要的环境变量 GOROOT 和 GOPATH,其中 GOROOT 是安装 go 的路
- antd form表单使用setFildesValue 赋值失效加上this.$nextTick(()=>{})即可this.$nex
- 这一篇MobaXterm详细使用教程,我们来介绍一下如何设置并用MobaXterm来连接Linux服务器。MobaXterm 又名 Moba
- 模块导入的规范模块是类或函数的集合,用于实现某个功能。模块的导入和Java 中包的导入的概念很相似都使用import语句。在Python中,
- 小程序大功能对一批报文要处理要处理里面的得分,发现python linecache ,特记录如下。#!/usr/bin/env python
- 在大型商业应用中,数据的异地容灾备份十分重要,也必不可少。笔者根据自己的实践经验,设计了一套简洁地实现异地数据自动备份的方法,可供数据库管理
- 前面的学习中,我们已经知道了两种python的数据类型:int和str。再强调一下对数据类型的理解,这个世界是由数据组成的,数据可能是数字(
- 本人电脑上的Python为3.5,安装在Windows上,虽然安装过程中选择了pip,但是在命令行输入pip后仍然不能成功,尝试一下方法,终
- 前言我最近喜欢去听情感类的节目,比如说,婚姻类,我可能老了吧。我就想着怎么把音乐下载下来了,保存到手机上,方便我们业余时间去听。发送请求首先
- 一、问题的提出随着互连网的发展,网站的数量以惊人的数字增加。网站的作用除了给广大网友们提供信息资讯服务外,还应该成为网友们上传与下载文件的场
- 概述laravel服务容器就像一个高度自动化的工厂,你需要的东西,定制好模型,使用特定接口来制造。因为使用了服务容器,laravel中大部分
- 问题:一直在想requests的content和text属性的区别,从print 结果来看是没有任何区别的看下源码:@property &n
- 本文实例讲述了python实现删除文件与目录的方法。分享给大家供大家参考。具体实现方法如下:os.remove(path)删除文件 path
- 什么是MySQL多实例简单地说,Mysql多实例就是在一台服务器上同时开启多个不同的服务端口(3306、3307),同时运行多个Mysql服
- 获取DataFrame虽然是一个比较简单的操作,但是有时候到手边就是写不出来,所以在这里总结记录一下:1.链表推倒式data =
- Django配置文件settings简单说明,包含时区语言等打开创建好的django工程,查看settings.py文件BASE_DIR =
- 在使用Pytorch进行神经网络训练时,有时会遇到训练学习率不下降的问题。出现这种问题的可能原因有很多,包括学习率过小,数据没有进行Norm
- 单线程实现多个定时器NewTimer.py#!/usr/bin/env pythonfrom heapq import *from thre
- 本文针对Python time模块进行分类学习,希望对大家的学习有所帮助。一.壁挂钟时间1.time()time模块的核心函数time(),
- 众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。你们中的许多人可能已经使用 pip