暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

pyenv使用笔记

Simble的小站 2019-02-06
182

OSX上的python版本纷繁复杂。

  • 有系统自带的: System/Library/Frameworks/Python.framework/Versions/
  • 有后来安装的: Library/Frameworks/Python.framework/Versions/

经常搞不清楚用的是哪里的python。遇到要升级python版本,又提心吊胆的怕把系统的那个给搞挂了。于是,便试着用pyenv来管理版本

关于Pyenv

pyenv是Python版本管理工具,能够使你轻松的在多个python版本之间进行切换

  • pyenv当前在github上有14k的关注量
  • 安装说明参看github上的安装文档

常用命令

使用pyenv commands
可以查看所有命令或者通过pyenv -h
来查看常用命令

版本管理

查看已安装的python版本

1
2
3
复制
$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
 3.7.0
复制

查看可以安装的版本

1
2
3
4
5
6
复制
$ pyenv install -l
Available versions:
 2.1.3
 2.2.3
 ...
 stackless-3.5.4
复制

可以看到,可安装的版本有python2, python3, activepython, anaconda, ironpython, jython, pypy, stackless, etc.

安装指定版本

1
2
3
4
5
6
复制
$ pyenv install 2.7.15
python-build: use openssl from homebrew
python-build: use readline from homebrew
Installing Python-2.7.15...
python-build: use readline from homebrew
Installed Python-2.7.15 to /Users/xxx/.pyenv/versions/2.7.15
复制

:Mac上安装可能会遇到The Python zlib extension was not compiled. Missing the zlib?
的错误,可以尝试CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 2.7.15

更多错误,可查看项目的wiki中的常见问题

安装完毕一个python版本后,需要执行pyenv rehash
来更新后,才能看到已安装的版本

优先级

可以为当前目录、当前shell以及全局进行不同的python版本定义

遵循shell>local>global的优先级顺序

设置版本

1
2
复制
$ pyenv global 2.7.15 #设置全局版本,版本信息记录在~/.pyenv/version
$ pyenv local 3.7.0 #设置当前目录的python版本,将在当前目录生成.python-version文件
复制
  • 当需要为一个目录设置特定的python版本时,可以先进入该目录下执行pyenv local xxx
  • 当需要为该目录下的一个子目录设置特定的python版本,可进入该子目录设置local
  • 设置完毕后,会在响应的目录下生成.python-version
    的文件
  • 使用时,将从当前目录开始查找,如果不存在.python-version
    文件,则向上一级查找,直到根目录为止
  • 如果到跟目录任然没有查找到,则使用global的设置
1
2
3
4
复制
$ pyenv shell 3.6.0 #为当前shell设置python版本,将通过环境变量的方式设置
$ env | grep PYENV_VERSION
PYENV_VERSION=2.7.15
$ pyenv shell --unset #
复制

virtualenv

默认情况下,安装pyenv后会安装pyenv-virtualenv的插件,可以通过pyenv virtualenv
创建虚拟环境

查看已有的virtualenv

1
2
3
复制
$ pyenv virtualenvs
 3.7.0/envs/common3 (created from /Users/abc/.pyenv/versions/3.7.0)
 common3 (created from /Users/abc/.pyenv/versions/3.7.0)
复制

创建virtualenv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
复制
$ pyenv virtualenv 2.7.15 my2.7.15
Collecting virtualenv
 Downloading https://files.pythonhosted.org/packages/8f/f1/c0b069ca6cb44f9681715232e6d3d65c75866dd231c5e4a88e80a46634bb/virtualenv-16.3.0-py2.py3-none-any.whl (2.0MB)
   100% |████████████████████████████████| 2.0MB 117kB/s
Requirement already satisfied: setuptools>=18.0.0 in ./.pyenv/versions/2.7.15/lib/python2.7/site-packages (from virtualenv) (39.0.1)
Installing collected packages: virtualenv
Successfully installed virtualenv-16.3.0
New python executable in /Users/abc/.pyenv/versions/2.7.15/envs/my2.7.15/bin/python2.7
Also creating executable in /Users/abc/.pyenv/versions/2.7.15/envs/my2.7.15/bin/python
Installing setuptools, pip, wheel...
done.
Requirement already satisfied: setuptools in /Users/abc/.pyenv/versions/2.7.15/envs/my2.7.15/lib/python2.7/site-packages
Requirement already satisfied: pip in /Users/abc/.pyenv/versions/2.7.15/envs/my2.7.15/lib/python2.7/site-packages

$ pyenv virtualenvs
 2.7.15/envs/my2.7.15 (created from /Users/abc/.pyenv/versions/2.7.15)
 3.7.0/envs/common3 (created from /Users/abc/.pyenv/versions/3.7.0)
 common3 (created from /Users/abc/.pyenv/versions/3.7.0)
 my2.7.15 (created from /Users/abc/.pyenv/versions/2.7.15)
复制

active & deactive

1
2
3
复制
$ pyenv activate my2.7.15
(my2.7.15) $
(my2.7.15) $ pyenv deactivate
复制

删除virtualenv

1
2
复制
$ pyenv uninstall my2.7.15
pyenv-virtualenv: remove /Users/abc/.pyenv/versions/2.7.15/envs/my2.7.15? Y
复制

Have Fun😄



文章转载自Simble的小站,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论