zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Codeforces Round #340 (Div. 2)
    搞清楚一下格式化输出
    TYVJ P1091 等差数列 Label:dp
    TYVJ P1098 任务安排 Label:倒推dp 不懂
    TYVJ P1034 尼克的任务 Label:倒推dp
    TYVJ P1045 &&洛谷 1388 最大的算式 Label:dp
    TYVJ P1046 Blast Label:dp
    TYVJ P1051 选课 Label:多叉转二叉&&树形dp(虐心♥)
    TYVJ P1073 加分二叉树 Label:区间dp
    二叉树遍历入门 Lebal:research
  • 原文地址:https://www.cnblogs.com/mysticbinary/p/12558653.html
Copyright © 2011-2022 走看看