专栏首页coding为python版本抓狂,试下pyenv吧安装pyenv版本切换pyenv-virtualenv小结

为python版本抓狂,试下pyenv吧安装pyenv版本切换pyenv-virtualenv小结

写python时,最烦的事莫过于版本切换。python3已经很成熟了,但很多生产项目依然用的是2.7版本,本地环境经常需要切换版本。此外,不同项目的依赖也不同,有时还会造成冲突。这些杂七杂八的问题让初学者很烦躁,pyenv正是解决此类问题的神器。

简单地说,pyenv是python的版本管理工具。能实现如下功能:

  • 安装多个不同版本的python,且彼此独立
  • 便捷地切换版本,可以设置为全局切换,也可以设置某个目录为特定的版本

pyenv

安装pyenv

pyenv源码仓库

以macos为例:

☁  ~  brew install pyenv
☁  ~  pyenv --version
pyenv 1.2.7

初始化pyenv

☁  ~  pyenv init
# Load pyenv automatically by appending
# the following to ~/.zshrc:

eval "$(pyenv init -)"

根据提示,将初始化指令追加到~/.zshrc中(不同的shell配置文件不同)

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

查看有哪些可安装的版本

☁  ~  pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  # ...

可用的版本极多,假设我们想要安装3.6系列的版本,可以用grep进行筛选

☁  ~  pyenv install --list | grep 3.6
  3.3.6
  3.6.0
  3.6-dev
  3.6.1
  3.6.2
  3.6.3
  3.6.4
  3.6.5
  3.6.6
  activepython-3.6.0

接下来我们选择用3.6.6版本, 安装的命令很简单:

pyenv install 3.6.6

但你会发现下载安装包的速度极其慢,基于众所周知的原因,直接下载国外源是不可行的。因此需要用以下的国内特色下载方式:

  1. 根据你要下载的版本号,拼接url
https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
  1. 用迅雷或其它下载工具下载
  2. 将安装包放到以下目录
☁  ~  mv ~/Downloads/Python-3.6.6.tar.xz ~/.pyenv/cache
  1. 执行安装指令
☁  ~  pyenv install 3.6.6
python-build: use openssl from homebrew
python-build: use readline from homebrew
Installing Python-3.6.6...
python-build: use readline from homebrew
Installed Python-3.6.6 to /Users/senlongzhong/.pyenv/versions/3.6.6
  1. 验证安装

查看已安装的版本

☁  ~  pyenv versions
  system
  3.6.6

版本切换

全局切换

将3.6.6设置为全局使用的版本

☁  ~  pyenv global 3.6.6
☁  ~  pyenv versions
  system
* 3.6.6 (set by /Users/senlongzhong/.pyenv/version)

重启shell, 执行python即可看到已经切换成了3.6.6版本

☁  ~  python
Python 3.6.6 (default, Sep  5 2018, 08:57:22)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

局部切换

除了全局使用,还可以针对某个目录选择特定的版本

按前面的方式安装2.7.14版本

☁  ~  pyenv versions
  system
  2.7.14
* 3.6.6 (set by /Users/long/.pyenv/version)

指定目录切换成2.7.14版本

☁  python  mkdir python2.7
☁  python  cd python2.7
☁  python2.7  pyenv local 2.7.14  # 将python2.7目录设置为2.7.14版本
☁  python2.7  python
Python 2.7.14 (default, Sep  5 2018, 09:12:27)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
☁  python2.7  cd ..
☁  python  python # 其他目录依然使用3.6.6版本
Python 3.6.6 (default, Sep  5 2018, 08:57:22)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

删除版本

☁  ~  pyenv uninstall 3.6.6

pyenv-virtualenv

pyenv已经很强大了,但还不够,如果我们希望每个项目的依赖都是独立的,而不是全部安装在同一版本的python中

就需要用到 pyenv-virtualenv

pyenv-virtualenv是pyenv的一个插件,用于创建指定版本的虚拟环境, github源码

安装

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

创建虚拟环境

☁  ~  pyenv virtualenv 2.7.14 my-virtual-env-2.7.14

查看现有的虚拟环境

☁  ~  pyenv virtualenvs
  2.7.14/envs/my-virtual-env-2.7.14 (created from /Users/long/.pyenv/versions/2.7.14)
  my-virtual-env-2.7.14 (created from /Users/long/.pyenv/versions/2.7.14)

启用虚拟环境

☁  ~  pyenv activate my-virtual-env-2.7.14
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(my-virtual-env-2.7.14) ☁  ~  python
Python 2.7.14 (default, Sep  5 2018, 09:12:27)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

virtualenv

退出虚拟环境

(my-virtual-env-2.7.14) ☁  ~  pyenv deactivate
☁  ~  python
Python 3.6.6 (default, Sep  5 2018, 08:57:22)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

删除虚拟环境

最简单粗暴的方式即可:

☁  ~  rm -rf ~/.pyenv/versions/my-virtual-env-2.7.14

小结

pyenv用于管理版本,pyenv-virtualenv用于管理指定版本的虚拟环境。强烈推荐在开发中结合两者来使用,让各个项目独立运行,不会互相干扰。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • pyenv,让你轻松切换各种python版本

    章鱼喵
  • 程序员,你为何而工作为什么而工作把自己当成一个企业别矫情,无效的努力没毛线用小结

    章鱼喵
  • v-model实例:英雄大会

    章鱼喵
  • 使用 pyenv 可以在一个系统中安装多个python版本

    2016.01.06 21:02* 字数 82 阅读 24416评论 11喜欢 12

    拓荒者
  • fedora安装pyenv实现python的版本管理

    curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv...

    bboysoul
  • Python版本管理利器--pyenv

    设置局部python版本,将Python版本写进当前目录下的.python-version 文件,这个版本号会覆盖全局的版本号,可以被PYENV_VERSION...

    用户2936342
  • 在Ubuntu 18.04中安装pyen

    最近正在重头梳理Python的基础知识,为了更好地使用Python进行开发,防止发生版本混乱(不同的第三方库有可能因为Python版本不兼容而报错),所以需要使...

    py3study
  • pyenv 安装(管理多个版本pyth

        yum install -y gcc make patch gdbm-devel openssl-devel sqlite-devel zlib-de...

    py3study
  • Linux下安装pyenv的方法

    以上所述是小编给大家介绍的Linux下安装pyenv的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLo...

    砸漏
  • pyenv 神器原理分析

    一个传统的方案是每个版本的 Python 可执行文件使用不同的名字,如 python、python2.6、python3。

    Coder Sam

扫码关注云+社区

领取腾讯云代金券