[pyenv] 1. 安装与使用

在看了几个开源的python环境管理器的评论后, 我打算入手 pyenv, 该项目有以下几个优势:

  1. 该项目使用纯shell脚本语言实现, 天然亲和linux开发环境.
  2. 通过设置的PATH环境变量和shims方法隔离的实现方案非常轻量化.
  3. 子命令引入了compgen补全功能, 对命令输入操作友好.
  4. 源码开源, 可扩展性好, 可以做再开发.

对于使用 pyenv 完成 日常工作的小伙伴, 这章看完就可以完美的解决python虚拟环境日常操作.
在这里插入图片描述

  1. pyenv 安装(linux)
    pyenv 使用shell语言实现, 不依赖其他额外环境, 对linux比较亲和.

    # 进入程序目录, 我放在 /home/hocker/workspace/programs 中
    # 如果安装失败或者中断, 需要将 pyenv 目录删除了才能执行.
    PYENV_ROOT=$HOME/workspace/programs/pyenv
    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer |  bash
    
    
    cat  >> ~/.bashrc  << EOF
    
    # >>> pyenv initialize >>>
    # Load pyenv automatically by appending
    # the following to
    # ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
    # and ~/.bashrc (for interactive shells) :
    export PYENV_ROOT="$PYENV_ROOT"
    export PATH="\$PYENV_ROOT/bin":\$PATH
    eval "\$(pyenv init -)"
    # Restart your shell for the changes to take effect.
    
    # Load pyenv-virtualenv automatically by adding
    # the following to ~/.bashrc:
    eval "\$(pyenv virtualenv-init -)"
    # <<< pyenv initialize <<<
    
    EOF
    
    
  2. pyenv 管理 python 版本的查看,安装与卸载

    • 查看pyenv 支持版本
    pyenv install --list
    
    • 查看python已安装版本
    pyenv versions
    
    • 安装指定python版本
    pyenv install 3.11.9
    # 下载可能非常慢
    可以通过浏览器在官网或者其他渠道先下载
    然后复制到本地目录, 使用 PYTHON_BUILD_BUILD_PATH 变量设置到本地目录, 然后再执行命令操作.
    PYTHON_BUILD_BUILD_PATH=$PYENV_ROOT/build pyenv install 3.11.9
    

    安装python的过程中, 可能会报下面错误

    -> https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tar.xz
    Installing Python-3.11.9...
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/hocker/workspace/programs/pyenv/versions/3.11.9/lib/python3.11/bz2.py", line 19, in <module>
        from _bz2 import BZ2Compressor, BZ2Decompressor
    ModuleNotFoundError: No module named '_bz2'
    WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
    ModuleNotFoundError: No module named 'readline'
    WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/home/hocker/workspace/programs/pyenv/versions/3.11.9/lib/python3.11/ssl.py", line 98, in <module>
        import _ssl             # if we can't import it, let the error propagate
    ModuleNotFoundError: No module named '_ssl'
    ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
    

    执行操作

    sudo apt install libbz2-dev libreadline-dev libssl-dev libsqlite3-dev -y
    
    • 删除python的版本
    pyenv uninstall 3.11.9
    # 删除 python 版本, 系统会提示 是否删除依赖该版本的虚拟环境, 
    # 如果虚拟环境不能删除, 则取消该次版本删除操作.
    
  3. pyenv 管理 python 虚拟环境的查看,安装与卸载

    • 查看python已建立的虚拟环境
    pyenv virtualenvs
    
    • 建立指定python的虚拟环境
    pyenv virtualenv 3.11.9 flask  
    # 3.11.9  是已有的 python版本
    # flask  是环境名称
    
    pyenv virtualenv flask flask2
    # 注意, 这种创建flask2 的方式并不能继承 flask 中的已有安装包
    # 只继承了 flask 基于  3.11.9 这个属性.
    
    • 卸载python的虚拟环境
    pyenv uninstall 虚拟环境名称
    
  4. pyenv 使用 python 虚拟环境

    • 手动打开与关闭 python 虚拟环境
    pyenv activate flask
    pyenv deactivate 
    
    • 指定全局默认 python 虚拟环境
    pyenv global flask torch
    # 指定多个时, 优先使用前一个, 至于后一个什么时候会触发, 我还没理解, 希望懂的大哥给小弟说说.
    
    # 恢复默认, 使用system
    pyenv global system
    
    
    • 目录指定和取消 python 虚拟环境, 指定后下次进入该目录, 自动使用该环境
    # 可以使用版本和虚拟环境
    pyenv shell 3.11.9
    pyenv shell flask  
    
    pyenv shell --unset # 取消
    

pyenv 是一个优秀的虚拟环境操作框架, 原生shell实现, 对其他项目依赖少, 很适合做服务器的环境管理工具.

参考:

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值