为什么会使用pyenv和pyenv-virtualenv插件

一般mac自带一个python版本,称为系统版本。对于开发者而言,肯定不够用啦。所以需要在同一个mac上组建不同的开发环境并且不会冲突。

pyenv使你可以在不同python版本之间轻松切换。它简单,低调,并且遵守UNIX的传统:single-purpose tools that do one thing well。

pyenv是基于rbenv和ruby-build项目,对python做了定制修改。

pyenv是第三方的,开源的多版本的Python管理工具,同时支持Python2和Python3.

pyenv-virtualenv插件是虚拟出同一版本的python但是不同依赖库版本的开发环境。这对于在同一台电脑上开发不同项目非常方便。

等等,难道官方没有类似的工具吗?

是有的,在Python3.3标准库中有一个venv模块就是干这个活的,但是,Python3.3之前的版本都不好用,鉴于现在很多项目是基于Python2.x的,所以......

等等,似乎我还听说过virtualenv的东西也有类似的功能?

virtualenv同时支持Python2和Python3,非常流行。它创建的虚拟环境可以指定Python解释器,并选择不继承基础版本的包。

那我还是用virtualenv吧。

是可以的,下面聊聊如何安装pyenv及其pyenv-virtualenv插件。

安装pyenv

通用版

1.clone一个pyenv项目

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

2.定义环境变量

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

对于zsh,使用~/.zshenv替换~/.bash_profile

对于Ubuntu和Fedora,~/.bashrc用替换~/.bash_profile

如果zsh和bash切换着用,那么./zshrc和./bashrc都要改,不然会出现找不到命令的报错

3.增加pyenv init到shell

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

对于zsh,使用~/.zshenv替换~/.bash_profile

对于Ubuntu和Fedora,~/.bashrc用替换~/.bash_profile

如果zsh和bash切换着用,那么./zshrc和./bashrc都要改,不然会出现找不到命令的报错

4.重启shell

$ exec "$SHELL"

Mac版

1.用homebrew安装

$ brew update
$ brew install pyenv

2.按照通用版第3步开始安装

 

安装pyenv-virtualenv插件

通用版

1.clone一个pyenv项目

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

2.定义环境变量

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

对于zsh,使用~/.zshenv替换~/.bash_profile

对于Ubuntu和Fedora,~/.bashrc用替换~/.bash_profile

如果zsh和bash切换着用,那么./zshrc和./bashrc都要改,不然会出现找不到命令的报错

3.重启shell

$ exec "$SHELL"

Mac版

1.用homebrew安装

$ brew install pyenv-virtualenv

2.同上第2步开始做

卸载 pyenv

# 通用
rm -rf $(pyenv root)
# Mac
brew uninstall pyenv

安装并使用python版本

1.查看可用的版本

$ pyenv  install --list

2.选择安装一个,如

$ pyenv install  3.6.

小技巧: 执行上面命令后,会从给定的网址中下载安装文件Python-3.6.2.tar.xz。但由于文件很大,下载需要很久。建议做法是:先执行以上命令然后马上中断安装,这样就知道 pyenv 要下载的文件的链接。然后用户自己用其他更快的方式(比如wget、迅雷等等)从该链接中下载安装文件并将安装文件移动到 ~/.pyenv/cache 目录下(该目录默认不存在,用户要自行新建),再执行上面的命令。编译安装本身也需要较长时间。默认安装路径是~/.pyenv/versions/3.6.2/

如果安装报错:

BUILD FAILED (Ubuntu 16.04 using python-build 1.1.3-21-g005a2e8)

解决方法如下:

  • Ubuntu/Debian:

    sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
    libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
    xz-utils tk-dev
  • Fedora/CentOS/RHEL:

    dnf install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
  • Mac OS X:
    brew install readline xz

3.查看版本

$ pyenv versions  (查看所有版本)
* system (set by /root/.pyenv/version)
2.7.
3.6.
$ pyenv version   (version 查看当前版本)
system (set by /root/.pyenv/version)

system 代表当前系统的python 版本

*表示当前的python版本, 可以看到, 我们还在使用的是默认的system 自带的python版本

4.切换python默认版本

$ pyenv global 3.6.
$ pyenv versions
system
2.7.
* 3.6. (set by /root/.pyenv/version)

5.创建一个3.6.2的虚拟环境

$ pyenv virtualenv 3.6. env362

这条命令在本机上创建了一个名为env362的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/

再次输入

$ pyenv versions

如图

env362是3.6.2/envs/env362的软连接

3.6.2是官方版本

5.使用3.6.2的虚拟环境

$ pyenv activate env362

如图所示

下面基本上你就可以在这个虚拟环境里面为所欲为了,再也不用担心系统路径被搞乱的问题了。

6.关闭3.6.2的虚拟环境

$ pyenv deactivate

7.卸载3.6.2的虚拟环境

$ pyenv uninstall env362

在pycharm中使用虚拟环境

打开pycharm选择Preferences|Project interpreter|showall就可以选择了。

MAC下pyenv和pyenv-virtualenv插件初探的更多相关文章

  1. mac下导出JetBrains IDE Support插件给linux

    自从google被和谐以后,上google的store安装插件是如此的费劲,好在mac下的chrome已经装好了,直接导出给linux就可以 mac下chrome的插件目录为 ~/Library/Ap ...

  2. mac 下安装ES 与 Head插件 以及安装Kibana

    一.安装Elasticsearch 在Mac上可以使用brew快速安装Elasticsearch brew install elasticsearch 安装完成后可使用elasticsearch -- ...

  3. Mac下Eclipse(Oxygen)添加Tomcat插件

    1 查看本机Tomcat版本 ~$ sh /Library/Tomcat/bin/catalina.sh version SiegdeMacBook-Pro:bin Sieg$ sh /Library ...

  4. mac下idea中安装docker插件

    idea中安装docker插件: 点击Intellij IDEA->Preferences...->Plugins->Browse repositories...如下: 点击Inst ...

  5. Mac 下实现 pyenv/virtualenv 与 Anaconda 的兼容

    http://blog.csdn.net/vencent7/article/details/76849849 自己一直用的 pyenv 和 pyenv-virtualenv 管理不同的 python ...

  6. Mac下安装pyenv

    mac 用virtualenv安装py3.6的虚拟环境报错(virtualenv -p /usr/bin/python3 env36), 解决的话需要安装zlib包, 然后去掉configure配置里 ...

  7. Ubuntu下python使用pyenv+virtualenv进行版本和包隔离

    安装pyenv 参考:https://github.com/pyenv/pyenv git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo ...

  8. Mac安装pyenv及pyenv的使用

    Mac系统自带的Python是2.7.10,自己需要Python 3.x,此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存,pyenv就是这 ...

  9. linux下快速安装pyenv管理多版本python

    起因 一直服务器python项目都是放docker跑,这次为了测试,不得不在宿主机跑,就必须安装python3.7,但是ubuntu16.04下有点麻烦 尝试 源码安装,懒,算了,也不想污染服务器环境 ...

随机推荐

  1. Python查看MQ队列深度

    分享一段代码,很简单但是也很实用. #!/usr/bin/python #-*- coding:gb18030 -*- ''' Usage: mq.py [Qmgr] *get the queues' ...

  2. 关于MultipleActiveResultSets属性导致的There is already an open DataReader associated with this Command which must be closed first的解决方法

    执行SqlDataReader.Read之后,如果还想用另一个SqlCommand执行Insert或者Update操作的话,会得到一个错误提示:There is already an open Dat ...

  3. 一个简单的时间轴demo

    一个时间轴的组成 使用一个块级元素包裹内容,并未块级元素设置边框 定义圆形或者菱形等元素标签,子元素设置偏移或者定位元素将图标定位到边框上 使其中的内容不溢出,自动换行,内容自动撑高 英文自动换行:w ...

  4. 论Activity及启动模式,Fragment,Service的使用以及生命周期

    Activity: 这是我总结出来的,介于Activity生命周期相对较多,我在Google官方的生命周期图上又加了几个常用的,便于大家理解 对于ACtivity,先说说启动模式(ps:复制党去死吧, ...

  5. blob 和 sas

    Blob是什么? 请看上篇文章简单总结下关于blob的图片上传 在使用Blob图片上传的时候碰到许多问题,比如如何使用用户名密码下载文件啊什么的 今天就记录一下我碰到的最大的问题 如何匿名去访问你上传 ...

  6. Linux常用命令及shell技巧

    这里列出一些个人在工作中常使用的各种linux命令,每一个不详细讲参数,只写经常用的参数.希望快速获得在linux命令行工作的能力的朋友可以看看.本人一直觉的,不使用linux 图形界面,以xshel ...

  7. c# 多线程 创建对象实例

    本次的标题是我在写单例模式的博客时遇到的问题,所以今天专门写了的demo让自己记住怎么简单的使用多线程. 一直纠结的是怎么在for循环中多次实例化对象,好复现单例模式在没有加锁的情况下出现多个实例对象 ...

  8. Windows7 下安装 tersorflow

    最近看起深度学习的一些知识,想要学习一个框架.在网上看了别人对这些框架的评比后,决定学习 tersorflow.之前一直以为 tersorflow 只可以在 Linux 下安装,出乎意料的是,Wind ...

  9. Hybris安装和各个Extention简单介绍

    前言:突然想好好梳理一下这几个月所学的内容了,顺便让自己的知识有一个系统的框架. 一.  安装JDK 请安装最新的Oracle JDK 8.0版(从Oracle官网下载). 二.开发工具建议使用 In ...

  10. 初探Matplotlib

    初探Matplotlib 例子来自此书: <Python编程从入门到实战>[美]Eric Matthes 使用pyplot绘图,一般的导入方法import matplotlib.pyplo ...