前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为python版本抓狂,试下pyenv吧安装pyenv版本切换pyenv-virtualenv小结

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

作者头像
章鱼喵
发布2018-09-26 18:02:27
1.3K0
发布2018-09-26 18:02:27
举报
文章被收录于专栏:codingcodingcoding

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.09.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装pyenv
  • 版本切换
    • 全局切换
      • 局部切换
      • pyenv-virtualenv
        • 安装
          • 创建虚拟环境
            • 启用虚拟环境
              • 退出虚拟环境
                • 删除虚拟环境
                • 小结
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档