美文网首页
Linux平台最好用的多版本Python环境和pip环境共存软件

Linux平台最好用的多版本Python环境和pip环境共存软件

作者: 吾星喵 | 来源:发表于2018-10-28 11:50 被阅读19次

    我的博客,欢迎阅读 https://blog.starmeow.cn

    简介

    pyenv
    https://github.com/pyenv/pyenv

    pyenv-virtualenv
    https://github.com/pyenv/pyenv-virtualenv

    pyenv是一种管理Python版本的工具,它支持在多个Python版本间自由切换,并且还具有virtualenv插件,可以简单快速的建立python的虚拟环境。

    virtualenv和pyenv-virtualenv

    pyenv-virtualenv一个pyenv插件,利用他你可以直接通过pyenv直接管理virtualenv。

    安装pyenv

    先安装相关依赖库

    如果不想在使用中出现莫名其妙的问题,最好先安装作者要求的环境,只需要运行下面的指令即可:

    sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev
    

    下载软件

    在terminal中,运行下面的指令,下载pyenv 的代码到~/.pyenv目录下

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

    添加环境变量

    先查看自身使用的是哪种shell,运行下面指令即可查看

    echo $SHELL
    

    如果是bash,则会返回

    /bin/bash
    

    如果是zsh,则会返回

    /bin/zsh
    

    根据自身终端类型,在相应文件中添加环境变量(其他类型的shell同理)

    bash:利用sudo gedit ~/.bashrc打开文件,在文件末尾添加:

    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    

    zsh:利用sudo gedit ~/.zshrc打开文件,在文件末尾添加

    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    

    上面的添加过程也可以直接在终端中运行下面的命令完成:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
    

    (zsh只需将最后的bashrc改成zshrc即可)

    添加shell命令

    使得在启动shell 的时候,初始化pyenv。

    在命令行中运行如下指令,添加环境变量(与上面同理)

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

    (zsh用户注意要将bashrc改成zshrc

    重启shell

    使改动生效

    exec $SHELL
    

    pyenv的使用

    详细的pyenv 指令集可以参见下面的链接:
    https://github.com/pyenv/pyenv/blob/master/COMMANDS.md

    以下是常用指令集:

    • pyenv commands
    • pyenv local
    • pyenv global
    • pyenv shell
    • pyenv install
    • pyenv uninstall
    • pyenv rehash
    • pyenv version
    • pyenv versions
    • pyenv which
    • pyenv whence

    下面简单介绍各个指令的用法:

    查询所有可以安装的版本

    pyenv install --list:查询所有可以安装的版本:

    pyenv install --list
    Available versions:
      2.1.3
      ...
      2.7
      2.7.1
      2.7.2
      ...
      3.2-dev
      3.2
      ...
      3.5.0
      3.5-dev
      ...
      3.6.0
      3.6-dev
      3.7-dev
      ...
    

    安装所需的版本

    pyenv install 2.7.6
    pyenv install 3.3.3
    

    卸载特定的Python版本

    pyenv uninstall 2.7.6
    

    显示当前活动的Python版本

    pyenv version
    2.7.6 (set by /home/yyuu/.pyenv/version)
    

    Python的全局设置

    整个系统生效

    pyenv global 3.3.3
    

    Python的局部设置

    当前目录生效

    pyenv local 3.3.3
    

    取消设置

    pyenv local --unset
    

    高级用法

    可以一次将多个版本指定为本地Python。

    假设你有两个版本的2.7.6和3.3.3。如果你喜欢2.7.6胜过3.3.3,

    pyenv local (高级)
    pyenv local 2.7.6 3.3.3
    pyenv versions
      system
    * 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
    * 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
    python --version
    Python 2.7.6
    python2.7 --version
    Python 2.7.6
    python3.3 --version
    Python 3.3.3
    

    如果你喜欢3.3.3胜过2.7.6,

    pyenv local 3.3.3 2.7.6
    pyenv versions
      system
    * 2.7.6 (set by /Users/yyuu/path/to/project/.python-version)
    * 3.3.3 (set by /Users/yyuu/path/to/project/.python-version)
      venv27
    python --version
    Python 3.3.3
    python2.7 --version
    Python 2.7.6
    python3.3 --version
    Python 3.3.3
    pyenv global (高级)
    

    你可以同时将多个版本指定为全局Python。

    假设你有两个版本的2.7.6和3.3.3。如果你喜欢2.7.6胜过3.3.3,

    pyenv global 2.7.6 3.3.3
    pyenv versions
      system
    * 2.7.6 (set by /Users/yyuu/.pyenv/version)
    * 3.3.3 (set by /Users/yyuu/.pyenv/version)
    python --version
    Python 2.7.6
    python2.7 --version
    Python 2.7.6
    python3.3 --version
    Python 3.3.3
    

    如果你喜欢3.3.3胜过2.7.6,

    pyenv global 3.3.3 2.7.6
    pyenv versions
      system
    * 2.7.6 (set by /Users/yyuu/.pyenv/version)
    * 3.3.3 (set by /Users/yyuu/.pyenv/version)
      venv27
    python --version
    Python 3.3.3
    python2.7 --version
    Python 2.7.6
    python3.3 --version
    Python 3.3.3
    

    如何安装pyenv-virtualenv(pyenv的插件)

    重要说明: 如果你没有将pyenv安装到标准目录(~/.pyenv)中,请确保将此插件克隆到安装到位置的“plugins”目录中。

    下载pyenv-virtualenv插件

    git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
    

    virtualenvs的自动激活

    这个功能是作者开发的一个十分实用的功能,它可以让你在进入到你自己设置过的Python版本的目录下,自动切换到virtualenvs的模式,此时你的相关命令只在当前virtualenvs下有效果。要启用改功能,运行下面的指令,添加环境变量即可

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

    Zsh注意修改的是~/.zshenv或者~/.zshrc,而不是~/.bashrc

    重新启动shell

    以使路径更改生效。

    exec $SHELL
    

    使用pyenv-virtualenv

    我们可以通过 pyenv virtualenv指令,指定所需的Python版本和virtualenv目录的名称。

    • 从当前环境的python版本创建virtualenv
    pyenv virtualenv envtest1
    
    • 列出现有virtualenvs
    $ pyenv shell venv34
    $ pyenv virtualenvs
      miniconda3-3.9.1 (created from /home/yyuu/.pyenv/versions/miniconda3-3.9.1)
      miniconda3-3.9.1/envs/myenv (created from /home/yyuu/.pyenv/versions/miniconda3-3.9.1)
      2.7.10/envs/my-virtual-env-2.7.10 (created from /home/yyuu/.pyenv/versions/2.7.10)
      3.4.3/envs/venv34 (created from /home/yyuu/.pyenv/versions/3.4.3)
      my-virtual-env-2.7.10 (created from /home/yyuu/.pyenv/versions/2.7.10)
    * venv34 (created from /home/yyuu/.pyenv/versions/3.4.3)
    
    • 激活virtualenv

    如果eval "$(pyenv virtualenv-init -)"在shell中配置,pyenv-virtualenv将在进入/离开包含.python-version列出有效虚拟环境的文件的目录时自动激活/停用virtualenvs。python-version文件表示本地Python版本,可以使用pyenv local命令创建和删除。

    也就是说,当我们在某个目录下运行pyenv local test1时,该目录就会创建一个.python-version的隐藏文件,文件内存有虚拟环境test1的名称,当下次我们再进入这个目录时,pyenv就会自动启动虚拟环境,无须人为控制。

    如果不想设置自动启动虚拟环境,也可以通过下面的命令手动激活和停用pyenv virtualenv:

    pyenv activate virtualenv的名称
    pyenv deactivate
    
    • 删除现有virtualenv
    pyenv uninstall my-virtual-env
    

    相关文章

      网友评论

          本文标题:Linux平台最好用的多版本Python环境和pip环境共存软件

          本文链接:https://www.haomeiwen.com/subject/hduptqtx.html