• Python切换版本工具pyenv


    使用了一段时间,我发现这玩意根本不是什么神器,简直就是垃圾,安装多版本总是失败,并且重复在系统环境中重复添加值(好几百行),我不建议使用这个工具,我建议使用anaconda。

    由于Python的2.x与3.x版本的一些语法使用是不相同的,所以在写和使用Python程序上都会遇到需要切换版本的情况。下面介绍切换Python版本的工具pyenv。

    安装pyenv

    这里以mac举例,需要先安装brew,没有安装的先去安装一下,现在安装brew和pyenv都需要在终端上设置一下代理。

    brew update
    brew install pyenv
    

    配置一下zsh

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    echo 'eval "$(pyenv init -)"' >> ~/.zshrc
    zsh
    

    安装与查看py版本

    # 查看可安装的版本
    pyenv install -l
    
    # 安装与卸载 python 3.6.6 , 注意安装py版本也需要设置一下终端代理,不然可能会超时导致失败
    pyenv install 3.6.6
    pyenv uninstall 3.6.6
    
    # 查看当前的 Python 版本
    pyenv version
    
    # 查看已经安装的Python版本
    pyenv versions
    

    安装后的py版本在/Users/你的用户名/.pyenv/versions 目录。

    ➜  versions pwd
    /Users/thoth/.pyenv/versions
    ➜  versions ls
    3.6.6
    ➜  versions
    

    切换py版本

    # global 全局设置 一般不建议改变全局设置
    pyenv global <python版本>
    
    # shell 会话设置 只影响当前的shell会话
    pyenv shell <python版本>
    # 取消 shell 会话的设置
    pyenv shell --unset
    
    # local 本地设置 只影响所在文件夹
    pyenv local <python版本>
    

    优先级关系是:shell > local > global

    这里做一下实验,写个小脚本运行一下: seeversion.py

    import sys
    print(sys.version)
    print(sys.version_info)
    

    验证切换到3.3.6

    # 设置版本
    ➜  program pyenv shell 3.6.6
    
    # 查看版本
    ➜  program pyenv versions
      system
    * 3.6.6 (set by /Users/thoth/program/.python-version)
    
    # 运行脚本和预期一致
    ➜  program python seeversion.py
    2.7.16 (default, Dec 13 2019, 18:00:32)
    [GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s
    sys.version_info(major=2, minor=7, micro=16, releaselevel='final', serial=0)
    

    验证切换回系统默认版本

    # 设置版本
    ➜  pyenv local system
    
    # 查看版本
    ➜  ~ pyenv versions
    * system (set by /Users/thoth/.python-version)
      3.6.6
    
    # 运行脚本和预期一致
    ➜  ~ python seeversion.py
    2.7.16 (default, Dec 13 2019, 18:00:32)
    [GCC 4.2.1 Compatible Apple LLVM 11.0.0 (clang-1100.0.32.4) (-macos10.15-objc-s
    sys.version_info(major=2, minor=7, micro=16, releaselevel='final', serial=0)
    

    总结: 我感觉全局就是你在终端的那个目录运行,都有效,但是这样设置未免太浪费,毕竟我们一般只在几个固定目录运行py脚本。

    shell就是你在当前打开的终端有效,关闭后无效。

    local就是,比如你cd进program目录,就在当前的.program目录内有效。其它目录无效。


    结合ide使用示例

    想让ide运行你安装的版本,设置运行版本路径为:/Users/thoth/.pyenv/versions/3.6.6/bin/python即可。


    和virtualenv的一些区别

    pyenv可以很方便地在终端和ide切换不同版本。但对于需要开发不同py程序的开发人员来说,不同的项目意味着每个项目都有不同的扩展类库,这些类库都统一安装在相应版本的python环境,会让他们感到很不舒服,不方便管理,也会臃肿。就会希望每个项目的环境都是独立的,纯粹的,干净的。有了这个挑剔的需求,virtualenv就是为这个而生的。


    参考文献

    https://www.sqlsec.com/2019/12/pyenv.html#toc-heading-5 https://www.jianshu.com/p/8aaf2525fa80

  • 相关阅读:
    Linux命令应用大词典-第11章 Shell编程
    Kubernetes 学习12 kubernetes 存储卷
    linux dd命令
    Kubernetes 学习11 kubernetes ingress及ingress controller
    Kubernetes 学习10 Service资源
    Kubernetes 学习9 Pod控制器
    Kubernetes 学习8 Pod控制器
    Kubernetes 学习7 Pod控制器应用进阶2
    Kubernetes 学习6 Pod控制器应用进阶
    Kubernetes 学习5 kubernetes资源清单定义入门
  • 原文地址:https://www.cnblogs.com/mysticbinary/p/12558653.html
Copyright © 2020-2023  润新知