开头

之前一直都在用python解释器和virtualenv来管理python的虚拟环境,但是被老大吐槽不好用之后,换了一种新的管理方式,那就是

pyenv + pyenv-virtualenv的使用

先装pyvenv,用pyvenv装python,然后用pyenv-virtualenv管理

pyenv 的参考文档 https://github.com/pyenv/pyenv

什么是pyenv

简单的说,pyenv是管理python版本的工具。安装pyenv后,可以管理各种python版本,并且各个版本的环境完全独立,互不干扰, 不用你每次需要解释器的时候到处去找安装包,很好的管理的python版本

安装pyenv

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

如果你使用 bash,就依次执行如下命令:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc

如果你使用 zsh,就依次执行如下命令:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc

在使用 pyenv 之前,重新初始化 shell 环境,执行如下命令

exec $SHELL

然后就可以使用pyenv了,简单的命令如下

# 查看当前版本
pyenv version # 查看所有版本
pyenv versions # 查看所有可安装的版本
pyenv install --list # 安装指定版本
pyenv install 3.6.5 -v
# 安装新版本后rehash一下
pyenv rehash # 删除指定版本
pyenv uninstall 3.5.2 # 指定全局版本
pyenv global 3.6.5 # 指定多个全局版本, 3版本优先
pyenv global 3.6.5 2.7.14 # 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的

当pyenv install 出错的时候,可以参考 https://blog.csdn.net/BigData_Mining/article/details/100100375

或者 下载很慢的时候 可以参考 https://www.cnblogs.com/Sungeek/p/10036033.html 离线安装

当出现切换版本无法切换的情况一般是因为用pyenv指定了local版本。

解决方法:

取消设置local版本:

pyenv local --unset

就可以自由的切换版本了

pyenv global 3.6.5
# 查看目前版本
pyenv versions

因为本人用的是wsl的系统所以会出现如下的情况:

pyenv版本成功切换了但python版本不变的情况,且出现 如下的报错

sourece 的时候出现
WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.
执行python的时候出现
zsh: command not found: python

这时候是因为python命令没有加软连接的导致找不到python,所以在终端中输入

sudo ln -s /usr/bin/python3.6 /usr/bin/python

wsl默认自带了python3.6.9的解释器

然后根据提示执行

pyenv init

将这部分脚本复制到你的~/.zshrc下(将之前的export加进来的先删掉)

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)" 然后执行刷新
source ~/.zshrc

这时候,pyenv就可以正常运行啦!(md,搞了好久)

什么是pyenv-virtualenv

pyenv-virtualenv 是一个管理 python 虚拟环境的 pyenv 插件,具体可以查看 pyenv-virtualenv 文档。https://github.com/pyenv/pyenv-virtualenv

python 虚拟环境相当于一个独立的 python 版本,有自己独立的目录,也可以独立的安装第三方库,而不会相互干扰

安装pyenv-virtualenv

从 Github 克隆 pyenv-virtualenv 仓库

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

会放到~/.pyenv的plugins的目录下,需要先确认是否有这个目录

然后将命令写到zshrc中

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc

然后哦执行

pyenv virtualenvs # 第一次执行应该是没有环境的
# 从当前版本创建一个虚拟环境
$ pyenv version
3.7.7 (set by /home/keke/.pyenv/version)
$ pyenv virtualenv venv37
# 稍等一下,就可以看到环境创建成功,两种方式查看
1、pyenv versions
2、 pyenv virtualenvs

激活关闭虚拟环境

pyenv activate <virtualenv-name>
pyenv deactivate 或者
pyenv local <virtualenv-name>
#取消设置
pyenv local --unset

如果报错 则输入以下两句

$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
$ exec $SHELL
$ source ~/.zshrc

至此 则成功启动

常用命令

pyenv命令集

pyenv install --list

    查询所有可以安装的版本

pyenv install 2.7.14

    安装所需的版本

pyenv uninstall

    卸载特定的Python版本。

pyenv version

    显示当前活动的Python版本

pyenv global 2.7.14

    Python的全局设置,整个系统生效

pyenv global 2.7.14

    Python的局部设置,当前目录生效

pyenv local --unset

    取消设置    

更多参考GitHub...

pyenv-virtualenv命令集:

pyenv virtualenv 2.7.14 venv2714

    制定版本创建virtualenv

pyenv virtualenvs

    列出现有virtualenvs

pyenv activate virtualenv的名称

    激活pyenv virtualenv

pyenv deactivate

    停用pyenv virtualenv

pyenv uninstall my-virtual-env

    删除现有virtualenv

特殊情况

遇到pyenv切换了但是python版本却不改变的问题,需要修改 bashrc 里面的内容,参考

完。

wsl下的python环境管理的更多相关文章

  1. Windows10下安装python(配置环境变量)

    从官网下载Windows下的python版本,一路按照默认进行安装. 安装之后配置环境变量的步骤如下: 1,点“我的电脑”,右键选“属性”. 2,选择“高级系统设置”--->选“环境变量”--- ...

  2. Centos7下安装python环境

    前言 centos7默认是装有pyhton的. #检查python版本 [root@oldboy_python ~ ::]#python -V Python 但是众所周知,python2版本到2020 ...

  3. Linux yum的配置 , python环境管理, nginx搭建简单学习

    Linux yum的配置 , python环境管理, nginx搭建简单学习 一丶配置yum的数据仓库 ### yum 工具, 方便,自行解决软件之间的依赖关系. # 配置yum源仓库 (可以使用,清 ...

  4. Sublime Text3配置在可交互环境下运行python快捷键

    安装插件 在Sublime Text3下面写代码感觉很不错,但是写Python的时候遇到了一些问题. 用Sublime Text3打开python文件,或者在Sublime Text3下写好pytho ...

  5. ubuntu14.04下搭建python+mysql环境

    简略记录ubuntu14.04下搭建python操作的mysql服务器的过程和其中遇到的问题及解决方法. 第一部分: 安装mysql 安装步骤:1. sudo apt-get install mysq ...

  6. Sublime Text 2下搭建Python环境常见错误

    Sublime Text 2下搭建Python环境时,最容易出的错误就是Python环境配置错误,导致build(Ctrl+B)后没有任何反应. 关于Python编程环境的配置,网上很容易搜索到.先默 ...

  7. Ubuntu下配置python完成爬虫任务(笔记一)

    Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...

  8. linux下更新python

    刚开始入门python,想直接入门python3,需要更新一下linux自带的python.自带的python是2.6,可以在终端root下键入python查看python版本. 1.从官网下载pyt ...

  9. 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码

    Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...

  10. 【转】linux和windows下安装python集成开发环境及其python包

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

随机推荐

  1. openssl 全面支持国密SM2/SM3/SM4加密算法

    sm4展示 代码 /** 文件名: https://github.com/liuqun/openssl-sm4-demo/blob/cmake/src/main.c */ #include <s ...

  2. python之自动化连连看脚本-第二关下移-小记

    (如想转载,请联系博主或贴上本博地址) 参考前一篇基础上,做出第二关下移逻辑判断,写的比较啰嗦. 下移和第一关不动基础代码是一样的.需要注意同列下移和不同列下移2种情况,同列下移需要注意相邻的2个和不 ...

  3. 【Beat】Scrum Meeting 1

    时间:2021年6月26日 1.各个成员今日完成的任务以及贡献小时数 姓名 今日完成任务 贡献小时数 鑫 编写软件的功能测试方案文档,录制视频演示软件系统安装配置过程 4 荣娟 编写软件的功能测试方案 ...

  4. 联邦学习开源框架FATE架构

    作者:京东科技 葛星宇 1.前言 本文除特殊说明外,所指的都是fate 1.9版本. fate资料存在着多处版本功能与发布的文档不匹配的情况,各个模块都有独立的文档,功能又有关联,坑比较多,首先要理清 ...

  5. C#笔记之泛型

    泛型是C#中应用极为广泛的一种语法,本篇文章将详细介绍泛型的定义.使用.性能等. 一.什么是泛型 首先需要记住的是,泛型是.NET 2.0推出的语法,这样的话,泛型基本可以用于所有程序的开发,而不需要 ...

  6. 【JVM盲点补漏系列】「并发编程的难题和挑战」深入理解JMM及JVM内存模型知识体系

    并发编程的难题和挑战 在并发编程的技术领域中,对于我们而言的难题主要有两个: 多线程之间如何进行通信和线程之间如何同步,通信是指线程之间以何种机制来交换信息. 多线程的线程通信机制 在命令式编程中,线 ...

  7. window.onload / onscroll/onresize 事件

    onload当文档加载完成后执行一些操作 window.onload = function(){ console.log("页面加载完成") } onscroll当页面发生滚动时执 ...

  8. Service Mesh之Istio基础入门

    技术背景 分布式服务治理 所谓分布式服务治理就是对服务不断增长的复杂度的管控和管理:管控及管理包含网络拓扑变动.网络延时.通信安全.API网关.服务注册和发现.服务熔断容错.服务超时重试.服务部署.数 ...

  9. 【PWN】初见BROP

    前言|与BROP的相遇 第一次BROP,它让我觉得pwn,或者说网安很妙,也很折磨 在遇到它之前,之前接触的题目都是简单的栈溢出,感觉没有啥有趣的,很简单,找gadget溢出就可以,一切都看得见 可遇 ...

  10. pandas之样本操作

    随机抽样,是统计学中常用的一种方法,它可以帮助我们从大量的数据中快速地构建出一组数据分析模型.在 Pandas 中,如果想要对数据集进行随机抽样,需要使用 sample() 函数.sample() 函 ...