zoukankan      html  css  js  c++  java
  • pyenv

    背景

    问题:

    (1)同一个环境中,由于方案不同,选择的python版本不同。

    一些开源软件,可能依赖老旧的python版本,但是项目选择的较新的python版本。

    这样导致一个环境中,需要安装多个python版本的需求。

    (2)即使对于同一python版本,多个不同的项目,选择的依赖包,有可能也有不同。

    对于第一个问题,只能手动单独安装不同版本,例如通过 apt-get install python3.7

    对于 python2 和 python3 的不同版本,则又需要维护 /usr/bin/python 和 /usr/bin/python3 和 pip软连接。

    这是一件繁琐且重复的事情。

    对于第二个问题, 可以采用 virtualenv 或者 pipenv 工具解决。 但是其必须是在某个指定的python版本上首先安装这些工具。

    解决方案

    pyenv 为这两个问题同时提供了解决方案。

    https://github.com/pyenv/pyenv

    Simple Python version management

    pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

    This project was forked from rbenv and ruby-build, and modified for Python.

    Terminal output example

    功能

         对于每一个用户提供改变python全局版本的能力。

        对于每个项目的python版本提供支持。

    pyenv does...

    • Let you change the global Python version on a per-user basis.
    • Provide support for per-project Python versions.
    • Allow you to override the Python version with an environment variable.
    • Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.

    安装

    自动安装

    The automatic installer

    Visit my other project: https://github.com/pyenv/pyenv-installer

    Prerequisites

    In general, compiling your own Python interpreter requires the installation of the appropriate libraries and packages. The installation wiki provides a list of these for common operating systems.

    Install:

    $ curl https://pyenv.run | bash

    pyenv.run redirects to the install script in this repository and the invocation above is equivalent to:

    $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    

    Restart your shell so the path changes take effect:

    $ exec $SHELL

    You can now begin using pyenv.

    Update:
    $ pyenv update

    按步骤安装(for Ubuntu)

    如果自动安装失败,使用此方法安装。

    https://github.com/pyenv/pyenv#installation

    Check out pyenv where you want it installed. A good place to choose is $HOME/.pyenv (but you can install it somewhere else).

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

    Define environment variable PYENV_ROOT to point to the path where pyenv repo is cloned and add $PYENV_ROOT/bin to your $PATH for access to the pyenv command-line utility.

    • For Ubuntu Desktop:

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

    Add pyenv init to your shell to enable shims and autocompletion. Please make sure eval "$(pyenv init -)" is placed toward the end of the shell configuration file since it manipulates PATH during the initialization.

    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then
      eval "$(pyenv init -)"
    fi' >> ~/.bashrc

    Restart your shell so the path changes take effect. You can now begin using pyenv.

    exec "$SHELL"

    因为pyenv采取的方案是下载python包,然后进行编译安装的方法,所以需要先安装编译工具

    Install Python build dependencies before attempting to install a new Python version.

    https://github.com/pyenv/pyenv/wiki#suggested-build-environment

    sudo apt-get update; sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

    Install Python versions into $(pyenv root)/versions. For example, to download and install Python 2.7.8, run:

    pyenv install 2.7.8

    说明

    (1) 如果安装过程中遇到如下报错,

      File "/usr/bin/lsb_release", line 64
        print("No LSB modules are available.", file=sys.stderr)
                                                   ^ SyntaxError: invalid syntax 

       则执行如下命令,可解决:

    sudo rm -rf /usr/bin/lsb_release

    from:

    https://askubuntu.com/questions/853377/error-with-lsb-release-a-in-ubuntu-16-04-xenial

    命令

    https://github.com/pyenv/pyenv/blob/master/COMMANDS.md

    完整命令

    从中可以看到,创建虚拟环境的命令也在其中。

    root:~/win10/mine# pyenv commands
    --version
    activate
    commands
    completions
    deactivate
    doctor
    exec
    global
    help
    hooks
    init
    install
    installer
    local
    offline-installer
    prefix
    rehash
    root
    shell
    shims
    uninstall
    update
    version
    version-file
    version-file-read
    version-file-write
    version-name
    version-origin
    versions
    virtualenv
    virtualenv-delete
    virtualenv-init
    virtualenv-prefix
    virtualenvs
    whence
    which
    root:~/win10/mine#

    pyenv环境覆盖关系

      三种环境, 按照优先级从高到低 shell > local > global

    <pre>
    +----------------------------------+
    |                                  |
    |   shell-specific Python version  |
    |                                  |
    +---------------+------------------+
                    |
                    v
    +---------------+------------------+
    |                                  |
    |                                  |
    |    local application-specific    |
    |    Python Version                |
    +---------------+------------------+
                    |
                    v
    +---------------+------------------+
    |                                  |
    |                                  |
    |      global version of Python    |
    |                                  |
    +----------------------------------+
    
    </pre>
    

    虚拟环境

    创建2.7.13虚拟环境

      pyenv virtualenv 2.7.13 env2713

    激活虚拟环境

      pyenv activate env271

    如果要切换回系统环境, 运行这个命令即可

      pyenv deactivate

    参考:

    https://www.cnblogs.com/chjbbs/p/6611452.html

    https://www.jianshu.com/p/158d880b2d41

  • 相关阅读:
    js post 异步请求
    Android 实现文件上传功能(upload)
    js 金额文本框实现代码
    纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
    NBearV2视频教学系列总索引,欢迎多提意见和建议[09/21更新至IoC篇]
    1.2 实体实例化及使用自定义实体[发布时间:9/6]
    NBear视频 4.1 基于NBear.IoC的企业级系统构架[发布时间:9/21]
    2.1 基于NBear.Data的实体持久化[发布时间:9/10]
    NBear案例源码 简易AJAX留言板 [Updated 10/31 Powered by NBear V3.0.0 preview]
    全面解析ASP.NET2.0下的URL重写
  • 原文地址:https://www.cnblogs.com/lightsong/p/13571671.html
Copyright © 2011-2022 走看看