美文网首页
Pyenv管理Python及虚拟环境

Pyenv管理Python及虚拟环境

作者: 爱修仙的道友 | 来源:发表于2019-03-30 11:38 被阅读0次

    1. Pyenv管理Python多版本环境

    1.1 安装git
    sudo apt-get update
    sudo apt-get install git 
    git --version
    
    1.2 安装rz
    1》ubuntu系统下,rz/sz命令安装方式如下:
    apt-get install lrzsz
    2》使用说明
    sz命令 发送文件到本地:
    # sz filename 
    rz命令 将本地上传文件到服务器
    #####rz
    执行该命令后,在弹出框中选择要上传的文件即可。
    

    参考 https://blog.csdn.net/sxingming/article/details/60870951

    1.3 Linux安装Pyenv
    • 安装依赖
      在安装Pyenv之前,我们需要先把Python的依赖项装好,如下所示:
    $ sudo apt-get install libc6-dev gcc
    $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
    
    • 下载Pyenv的源码
    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    

    在这里是把Pyenv下载下来后,放到了 ~ 家目录下,起名为 .pyenv 的隐藏目录中。这只是一个官方比较推荐的位置,实际上你可以自行选择把你的 .pyenv 目录放到任何位置。
    在下载完毕之后,还需要配置一下Pyenv的环境变量以及Pyenv启动的语句:

    $ 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,那么需要把 ~/.bashrc 修改为 ~/.zshenv,按照系统的不同,可能还需要修改为 ~/.bash_profile。

    如果你修改了 .pyenv 的位置,那么你还要将上面命令中的对应路径进行修改。

    配置完毕之后重启 shell 即可生效:

    exec "$SHELL"
    
    • 换源安装
    因为pyenv默认会从Python官网下载压缩包,因为众所周知的原因,国内访问Python官网不稳定,因此在下载过程中会非常慢,解决该问题有两个办法:
    1. 手动将Python压缩包下载到~/.pyenv/cache/目录下,pyenv会校验md5值和完整性,确认无误的话就不会重新下载直接从这里安装;这里有个需要注意的地方,需要把下载的Python压缩包后缀名由.tgz修改为.tar.gz(切记不能采用把.tgz解压之后再压缩成.tar.gz 的方式,因为这样的话会导致源文件的md5值发生变化而校验失败重新下载。)
    2. 直接修改pyenv配置文件,将Python下载地址修改为国内Python镜像源地址,在此,推荐第二种方法,我这里使用的是sohu的镜像源;修改~/.pyenv/plugins/python-build/share/python-build/目录下对应版本号文件,你需要安装哪个版本就修改哪个版本号,替换下载地址为sohu镜像源地址:
    # cd ~/.pyenv/plugins/python-build/share/python-build/
    # vim 3.6.5
      #install_package "Python-3.6.5" "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz#f434053ba1b5c8a5cc597e966ead3c5143012af827fd3f0697d21450bb8d87a6" 
      install_package "Python-3.6.5" "http://mirrors.sohu.com/python/3.6.5/Python-3.6.5.tar.xz#f434053ba1b5c8a5cc597e966ead3c5143012af827fd3f0697d21450bb8d87a6" 
    
    1.4 使用方式

    配置完毕之后,就可以在命令行中使用 Pyenv 命令了,加上 -h 参数可以查看帮助和使用方式:

    $ pyenv -h
    Usage: pyenv <command> [<args>]
    
    Some useful pyenv commands are:
       commands    List all available pyenv commands
       local       Set or show the local application-specific Python version
       global      Set or show the global Python version
       shell       Set or show the shell-specific Python version
       install     Install a Python version using python-build
       uninstall   Uninstall a specific Python version
       rehash      Rehash pyenv shims (run this after installing executables)
       version     Show the current Python version and its origin
       versions    List all Python versions available to pyenv
       which       Display the full path to an executable
       whence      List all Python versions that contain the given executable
    
    See `pyenv help <command>' for information on a specific command.
    For full documentation, see: https://github.com/pyenv/pyenv#readme
    

    在这里我们讲解一下比较常用的一些命令的使用方式。

    • 查看和安装Python
      需要注意的一点是,Pyenv 仅能够管理由 Pyenv 自己安装的Python,也就是说如果你使用编译或其他方式安装的Python版本,将不会纳入 Pyenv 的管理。
      首先,我们来查看使用 Pyenv 能安装什么版本的Python:
    $ pyenv install --list
    

    使用此命令即可查看 Pyenv 能安装的所有版本,包括官方的Python、anaconda、pypy等。在这里,只有数字的,如 3.6.6 这种就是官方版本的Python。
    选择好你要安装的Python版本之后,使用以下命令即可安装:

    $ pyenv install 3.6.6
    

    版本名字需要和上一条命令中查询到的一致。
    依赖项这些都没有问题的话,一般输入命令等待安装成功即可,安装完成后,我们可以使用以下命令来查看纳入 Pyenv 安装的有哪些版本:

    $ pyenv versions
    * system (set by /Users/wnanbei/.pyenv/version)
      3.6.6
      3.7.1
    

    这里的 system 则是系统本身的Python环境,而下方的 3.6.6 和 3.7.1 则是使用 Pyenv 安装的,带 * 的则是当前正在使用的Python环境。

    • 切换Python环境
      安装了多个Python版本之后,使用 Pyenv 可以非常快速便捷的在多个Python版本中切换,而不会造成冲突。其设定Python环境的方式也有几种。
    • 全局Python环境
      指定全局的Python环境一般用的比较少,如果你嫌每次都要用命令进入环境比较麻烦的话,那么你可以指定一个比较常用的Python版本作为全局的Python环境:
    $ pyenv global 3.6.6
    
    • 局部Python环境
      除了全局环境之外,还可以给某个目录指定环境,也就是说,只要进入这个指定之后的目录,那么其所处的环境就是指定的Python版本了。
      指定之前,首先要使用 cd 命令进入要指定的目录,然后输入以下命令。
    $ pyenv local 3.6.6
    
    • 如果要取消某个目录的Python环境,可以使用以下命令:
    $ pyenv local --unset
    
    • 临时Python环境
      所谓的临时Python环境,与上面的全局和局部环境不同,只是当前有效,退出Shell之后,下次再进入还需要重新切换。输入以下命令进入临时Python环境:
    $ pyenv shell 3.6.6
    

    如果需要退出临时环境的话,使用以下命令:

    $ pyenv shell --unset
    

    这三种Python环境的优先级为:shell > local > global

    • pip安装库timeout
      pip安装库的时候,也会经常出现现在速度很慢或者timeout的状况,更换成国内镜像源即可解决问题
    创建一个pip.conf文件
    # mkdir ~/.pip
    # vim ~/.pip/pip.conf
    [global]
    index-url = http://mirrors.aliyun.com/pypi/simple/
    
    [install]
    trusted-host=mirrors.aliyun.com
    
    2 安装 pyenv-virtualenv

    git 地址:https://github.com/pyenv/pyenv-virtualenv

    把插件克隆在刚才已经安装完毕的 pyenv 的 plugins 文件夹中

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

    然后配置环境变量

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

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

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

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

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

    exec $SHELL
    

    不执行该命令也是完全可以的,你可以关闭当前的终端窗口,重新启动一个就可以了。

    到此,我们的所有重要安装已经全部完成了,可以开始体验了。
    使用刚才安装的 python 3.6.6
    首先我们需要明确一个概念,pyenv 和 pyenv-virtualenv 他们是如何协作的,你可以这么认为:

    pyenv 托管 python 版本,virtualenv 使用 python 版本

    好了,之前已经装好了版本,那么现在就来使用吧

    第 1 步:创建虚拟环境
    首先需要创建一个虚拟环境,执行命令:

    pyenv virtualenv 3.6.6 my-env
    

    它的格式就是这样固定的,最后一个是你自己想要的环境的名字,可以随便取。稍等片刻,你将会看到:

    Looking in links: /tmp/tmp0eywgc7v 
    Requirement already satisfied: setuptools in /home/joit/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (39.0.1) 
    Requirement already satisfied: pip in /home/joit/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (10.0.1)
    

    类似于这样的回显信息,说明环境已经创建成功了,它还告诉了你,该虚拟环境的绝对路径,如果你进去看了,你就会发现,所谓的虚拟环境,就是把 python 装在 pyenv 的安装目录的某个文件夹中,以供它自己调用。

    第 2 步:激活虚拟环境
    在任意目录下,执行命令:

    pyenv activate my-env
    

    你会发现,在你的终端里面,多了一个类似于 (my-env) 这样的一个东西,这时候你如果执行:

    python --version
    

    那就是 python 3.6.6 了
    2.退出虚拟环境

    pyenv deactivate
    

    3.pyenv 命令格式

    Usage: pyenv <command> [<args>]
    
    
    activate
    
    commands 查看pyenv的命令大全 pyenv commands 
    completions
    deactivate
    doctor
    exec
    global 显示和设置全局python版本 pyenv global [3.6.1]
    help 显示pyenv帮助 pyenv [command] help
    hooks
    init
    install  安装指定版本python pyenv install 3.6.1
    installer
    local 设置和显示本地python版本 python local 和 python local 3.6.1
    offline-installer
    prefix
    rehash
    root 
    shell
    shims
    uninstall 卸载指定版本python python uninstall 3.6.1
    update  更新pyenv版本 pyenv update 
    version  列出本地使用的python版本 pyenv version
    --version 列出pyenv版本 pyenv --version
    version-file
    version-file-read
    version-file-write
    version-name
    version-origin
    versions 列出所有python版本 pyenv versions
    virtualenv
    virtualenv-delete
    virtualenv-init
    virtualenv-prefix
    virtualenvs
    whence 列出给定执行文件包含的python版本 pyenv whence abc 
    which 
    
    • 更新pip
    pip install --upgrade pip
    
    • 安装wheel
    pip install wheel
    

    相关文章

      网友评论

          本文标题:Pyenv管理Python及虚拟环境

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