pyenv管理虚拟环境_pyenv version-程序员宅基地

技术标签: linux系统配置  pyenv管理虚拟环境  虚拟环境  

pyenv的安装和使用

作为主流开发语言, 用Python 开发的程序越来越多。 方便的是大多Linux系统里面都默认集成了python, 开发可以随时随地开始。 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试一些需要安装在默认python路径里的程序, 反复地修改和安装会使系统目录越来越乱,这对于一些有洁癖的程序员来说是不可接受的。 还有时候我们需要在不同的python版本上开发, 而系统一般只会自带一到两种python版本, 切换起来更是麻烦。

本文将介绍如何利用pyenv 和virtualenv 在单机上搭建多版本python 虚拟开发环境。

首先我们搞清楚pyenv 和virtualenv分别是干什么的。

pyenv可以帮助你在一台开发机上建立多个版本的python环境, 并提供方便的切换方法。

virtualenv则提供了一种功能, 就是将一个目录建立为一个虚拟的python环境, 这样的话, 用户可以建立多个虚拟环境, 每个环境里面的python版本可以是不同的, 也可以是相同的, 而且环境之间相互独立。

如果解释得还不是很清楚的话,我们举例说明。

首先我们可以用pyenv 安装多个python 版本, 比如安装了2.5, 2.6, 3.3 三个版本。 用户可以随意切换当前默认的python版本。 但这时候, 每个版本的环境仍是唯一的, 如果我们想在环境中安装一些库的话, 还是会导致这个版本的环境被修改。 这个时候, 如果我们用virtual env去建立虚拟环境, 就可以完全保证系统路径的干净。无论你在虚拟环境中安装了什么程序, 都不会影响已安装版本的系统环境。

说了这么多, 还是动手实践一下来得实在。本文的例子是在一台干净的Ubuntu机器上进行的

1. 首先我们安装pyenv

因为我的Ubuntu是干净的, 所以还需要先安装curl 和 Git

sudo apt-get install curl git-core

接下来安装pyenv

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

这个命令会把pyenv安装到当前用户的 ~/.pyenv目录下.

同时, 我们还需要把下面代码存到~/.bashrc文件中:

复制代码

export PYENV_ROOT="${HOME}/.pyenv"

if [ -d "${PYENV_ROOT}" ]; then
  export PATH="${PYENV_ROOT}/bin:${PATH}"
  eval "$(pyenv init -)"
fi

复制代码

这段代码的作用主要是指明pyenv的位置, 以便以后可以直接在命令行里面运行pyenv命令。 保存在~/.bashrc 文件中是为了每次用户登陆后自动生效。

所以如果你是第一次运行命令并且没有注销的话, 这一段是不会生效的, 我们还需要运行下面的命令令其生效

source ~/.bashrc

然后就可以直接在命令行里面敲pyenv了。

2. 安装一些必须的包

sudo apt-get build-dep python2.7

后面安装其他版本python的时候会需要这些包

3. 安装某个版本的python

首先我们可以查看一下有哪些版本的python 可以安装

pyenv install --list

结果如下:

复制代码

2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.5
...

复制代码

接下来, 作为例子我们安装两个版本 (2.7.1 和 3.3.5)

pyenv install 2.7.1
pyenv install 3.3.5

安装完毕后, 我们可以查看安装的情况

pyenv versions

输出结果如下:

* system (set by /home/tony/.pyenv/version)
  2.7.1
  3.3.5

简单来说我们已经在这台机器上安装了三个版本的python

system 代表当前系统的python 版本

2.7.1 和 3.3.5是我们用pyenv安装的

*表示当前的python版本, 可以看到, 我们还在使用的是默认的system 自带的python版本

4. 切换python版本做一下测试

既然已经安装了两个其他版本的python, 我们来做一下测试

pyenv global 2.7.1

这条命令就是将当前python 版本切换到2.7.1

再次运行 pyenv versions, 结果如下:

  system 
* 2.7.1 (set by /home/tony/.pyenv/version)
  3.3.5

可以看到当前的python 版本已经切换到2.7.1了, 如果还不放心, 直接运行 ‘python’ 命令进行验证:

tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May  9 2014, 01:07:17) 
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>> 

这里可以清楚看到, 当前版本确实是2.7.1

同理, 我们可以继续用python global在各个版本之间进行切换, 如果要切换回系统版本, 请用:

pyenv global system

如果要卸载某个版本的python, 可以这样:

pyenv uninstall x.x.x

5. 利用virtualenv 创建虚拟python环境

现在我们已经安装了多个python版本,但是这还不够, 某些有洁癖的程序员是一定要系统环境足够干净的,这时候我们可以使用virtualenv来创建虚拟python环境

virtualenv本是一个独立的工具,官网在这里:https://pypi.python.org/pypi/virtualenv

幸运的是,如果你是安装我们前面的方式安装pyenv的,那它已经帮我们以plugin的形式安装好了virtualenv, 我们只要使用就好了

首先我们创建一个2.7.1的虚拟环境

pyenv virtualenv 2.7.1 env271

这条命令在本机上创建了一个名为env271的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/

注意,命令中的 ‘2.7.1’ 必须是一个安装前面步骤已经安装好的python版本, 否则会出错。

然后我们可以继续通过 ‘pyenv versions’ 命令来查看当前的虚拟环境, 结果如下:

* system (set by /home/tony/.pyenv/version)
  2.7.1
  3.3.5
  env271

这里我们可以看到, 除了已经安装的python版本, 我们多出了一个env271的python虚拟环境

6. 切换和使用新的python虚拟环境

切换到新的虚拟环境的命令为

pyenv activate env271

接下来我们的python环境就已经切换到2.7.1的虚拟环境了, 运行 ‘python’ 命令认证

(env271)tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May  9 2014, 01:07:17) 
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到, python版本已经是2.7.1, 而且是在虚拟环境之中 (env271)

下面基本上你就可以在这个虚拟环境里面为所欲为了 ? 再也不用担心系统路径被搞乱的问题了。

如果要切换回系统环境, 运行这个命令即可

pyenv deactivate

那如果要删除这个虚拟环境呢? 答案简单而且粗暴,只要直接删除它所在的目录就好:

rm -rf ~/.pyenv/versions/env271/
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/pythoncsdn111/article/details/94365058

智能推荐

分布式事务seata的使用_seata事务管理-程序员宅基地

文章浏览阅读266次。Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。_seata事务管理

目前支持CUDA的nVIDIA的显卡型号 驱动及其 修改过后的 inf文件_g73驱动-程序员宅基地

文章浏览阅读1.9w次。下载169.21_forceware_winxp_32bit_english_whql.exe NVIDIA Driver for Microsoft Windows XP with CUDA Support (169.21) 我们在运行它的时候,有的就会提示显卡不支持,例如:lenovo T61上的显卡NVS 140m应该是可以支持CUDA的,但是安装驱动的时候,就会提示不匹配。这里我们_g73驱动

栈的链式存储(详解)-程序员宅基地

文章浏览阅读935次,点赞10次,收藏11次。链式存储的栈操作灵活,但由于每个节点需要额外的指针空间,可能会占用更多的内存。另外,由于链式存储的特性,访问栈中特定位置的元素可能需要遍历整个链表,导致性能略低于顺序存储。栈的链式存储是通过链表来实现的,每个节点包含一个元素和一个指向下一个节点的指针。链式存储的栈不需要提前分配内存空间,可以动态地增加或减少元素。在链式存储中,栈顶元素通常是链表的头节点,栈底元素是链表的末尾节点。_栈的链式存储

CentOS6.9安装iptables防火墙-程序员宅基地

文章浏览阅读484次。2019独角兽企业重金招聘Python工程师标准>>> ..._centos6.9 离线安装防火墙

python:关于install launcher for all users 无法勾选的问题_install launcher for all users无法勾选-程序员宅基地

文章浏览阅读1.8w次,点赞25次,收藏25次。解决方法一:以管理员身份运行安装文件解决方法二:之前的python没有卸载干净去控制面板里面的卸载程序里面卸载 卸载完了就可以勾选啦_install launcher for all users无法勾选

selenium.common.exceptions.WebDriverException错误解决_selenium.webdriverexception:-程序员宅基地

文章浏览阅读2.4k次。selenium.common.exceptions.WebDriverException错误解决参考资料说明解决讨论参考资料https://blog.csdn.net/mango_ZZY/article/details/105138176https://selenium-python.readthedocs.io/installation.html#drivers说明今天在python3.7环境下用snapshot_selenium渲染pyecharts的图片,报了以下错:selenium.c_selenium.webdriverexception:

随便推点

自动绕线机PLC数据采集远程维护上下载系统方案-程序员宅基地

文章浏览阅读808次,点赞10次,收藏10次。方案采用物通博联工业智能网关作为PLC(可编程逻辑控制器)数据采集的核心设备,通过与自动绕线机的接口(串口/网口)连接,实时采集设备的运行数据与工艺数据,并通过网络(5G/4G/WIFI/以太网等)传输至远程监控中心与本地电脑中。在工业生产中,自动绕线机是一种常见的设备,它能够自动地将线材绕制在特定的工件上,以实现高效、精确的生产,具备较高的生产效率、较低的生产成本以及自动化生产优势,在纺织厂、电子厂等场景广泛使用。3. 生产控制:实现对远端PLC的启停控制、调整工作参数等,提高生产过程的可控性。

清华博士接亲被要求现场写代码,网友:真是面向对象编程!-程序员宅基地

文章浏览阅读434次。点击蓝字关注我们了解与IT有关的人和事来源:数据与算法之美因为结婚,程序员又上热搜了但这次不是加班维护服务器而是程序员接亲被要求现场写代码01清华计算机博士接亲被要求现场写代码陕西西安,..._清华出来的会直接写代码吗

基于SSM的房产中介系统-程序员宅基地

文章浏览阅读856次,点赞20次,收藏17次。然后,通过详细分析,我们设计了系统。论文对基于JavaWeb的房产中介系统进行了介绍,包括他的现状,还有涉及的开发背景,然后还对系统的设计目标进行了论述,还有系统的需求,以及整个的设计方案,对系统的设计以及实现,也都论述的比较细致,最后对房产中介系统进行了一些具体测试。在三层体系结构的B/S系统中,通过浏览器,会员可以对很多服务器发出请求, B/S系统会很大程度的降低工作量,用户只需要安装运行较少的客户端即可,大量的工作将由服务器承担,另外,服务器也完成包括访问数据库,执行应用程序的工作等等。

PageHelper分页能查出总条数但是列表没有数据_pagehelper查询的时候总数有三条,但是list是空的-程序员宅基地

文章浏览阅读4.7k次。前言如题,转载地址:https://blog.csdn.net/ZS12345678ZS/article/details/91871504原因:pagehelp分页pagenum从1开始_pagehelper查询的时候总数有三条,但是list是空的

Android adb/串口命令设置和获取系统音量_android手机发送usb hid 音量设置指令-程序员宅基地

文章浏览阅读1.6k次。原文地址:https://blog.csdn.net/sunxiaolin2016/article/details/1088437161、查看audio的全部信息(各音频流音量,焦点,策略等) dumpsys audio12、设置音量并且显示音量UI //stream 3表示多媒体,10表示音量值 media volume --show --stream 3 --set 101 23、音量调大调小 media volume --stream 3 --adj r._android手机发送usb hid 音量设置指令

生物传感器技术的进步:从基因测序到智能穿戴设备-程序员宅基地

文章浏览阅读790次,点赞15次,收藏12次。1.背景介绍生物传感器技术是一种用于测量生物系统中物质、信息和能量变化的设备。它们在医疗、环境监测、农业和生物科学等领域具有广泛的应用。随着科技的发展,生物传感器技术不断进步,从基因测序到智能穿戴设备,这些技术的进步为我们提供了更多的可能性和机遇。在本文中,我们将探讨生物传感器技术的进步,包括基因测序、微机器人、生物芯片和智能穿戴设备等领域的发展。我们将讨论这些技术的核心概念、联系和算法原...

推荐文章

热门文章

相关标签