今天一不小心又把ubuntu系统给完坏了,因为我把python3卸载了,然后就。。。好了,不废话了,接下来就说一下如何在ubuntu下管理python的多个版本。我这里使用的是一个叫pyenv的Python版本管理工具。

  系统环境:ubuntu14.04LTS,系统默认的python版本为2.7,我这里想要再安装一个3.4.3版本。

  • 再安装python之前,我们首先要安装这个管理工具pyenv:
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ exec $SHELL -l

  我们还可以通过下面这个命令来查看可以安装的python版本:

$ pyenv install --list
  • 如果我们确定要安装python3.4.3的话,接下来我们就可以安装python了,但是再安装之前,我们必须要安装python所需要的依赖包,这个必须要安装,安装会失败的:
$ sudo apt-get install libc6-dev gcc
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
  • 上面的依赖包搞定之后,我们就可以安装python了:
$ pyenv install 3.4.3 -v

  该命令会从github上下载python的源代码,并解压到/tmp目录下,然后在/tmp中执行编译工作。若依赖包没有安装,则会出现编译错误,需要在安装依赖包滞后重新执行该命令。

  • 安装完成之后,需要使用如下命令对数据库进行更新:
$ pyenv rehash
  • 查看当前已经安装的python版本
$ pyenv versions
* system (set by /home/seisman/.pyenv/version)
3.4.3

  其中星号代表是当前系统正在使用的python版本是系统自带的。

  • 设置全局的python版本
$ pyenv global 3.4.3
$ pyenv versions
system
* 3.4.3 (set by /home/seisman/.pyenv/version)

  从上面,我们可以看出来当前的python版本已经变为了3.4.3。也可以使用pyenv local或pyenv shell临时改变python的版本。

  • 确认python版本
$ python
Python 3.4.3 (default, Apr  1 2015, 19:10:43) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

  注意事项:

  • 输入python即可使用新版的python;
  • 系统自带的脚本会以/usr/bin/python的方式直接调用老版本的python,因而不会对系统脚本产生影响;
  • 使用pip安装第三方模块时会安装到~/.pyenv/versions/3.4.3下,不会和系统模块发生冲突;
  • 使用pip安装模块后,可能需要执行pyenv rehash更新数据库。

  参考资料:

  [1] http://seisman.info/python-pyenv.html

  [2] http://crazyof.me/blog/archives/13.html

posted @ 2015-04-01 19:42 NW_KNIFE 阅读(37721) 评论(3) 推荐(4) 编辑
摘要: 电脑环境:双系统(windows7 32位+ubuntu14.04LTS 64位),我重装系统的原因有几点:我在搞python库的字体的时候一不小心把windows系统的字体玩坏了,不知道为什么windows下的字体一直显示怪怪的;电脑内存是4G,如果是32位的话有点浪费,所以想重装一个64位的... 阅读全文
posted @ 2015-03-31 17:30 NW_KNIFE 阅读(784) 评论(0) 推荐(1) 编辑
摘要: 最近在学习机器学习,上面的代码都是一些python代码,对于python只是会一些基础性的东西,刚才就遇到了一个比较low的问题,但是还是记录一下吧。 在python代码中出现了中文,但是我又把# -*- coding: utf-8 -*-这句话放到了第三行,所以导致出现了,如下的错误:Syn... 阅读全文
posted @ 2015-03-19 21:42 NW_KNIFE 阅读(2015) 评论(0) 推荐(0) 编辑
摘要: 最近使用hexo的过程中出现了问题,中间载nodejs安装的时候也耽误了些许时间,所以在此记录一下安装的过程。 环境:ubuntu14.0.4LTS,安装nodejs版本node-v0.10.36.tar.gz。点我下载 这里选择源码包安装方式,下载之后,安装过程如下:$ sudo cp n... 阅读全文
posted @ 2015-03-19 14:01 NW_KNIFE 阅读(8309) 评论(0) 推荐(1) 编辑
摘要: 之前就载ubuntu14.0.04上安装了sublime,在学习python的时候,基本不怎么使用中文,所以就没有解决它无法进行中文输入的问题,今天心血来潮,想解决一下这个问题,也是为以后少点麻烦,下面我列出我解决的过程与步骤: 1.保存下面的代码到文件sublime_imfix.c(位于~目... 阅读全文
posted @ 2015-03-18 11:47 NW_KNIFE 阅读(1274) 评论(0) 推荐(0) 编辑
摘要: 最近因为论文原因在学习机器学习,看的一本叫做《机器学习实战》的书,看了看还是不错的,因为其中既有原理又有实例。今天载使用matplotlib进行画图时,发现中文会显示为小方块,这个问题真是神烦,折腾了一下午,终于搞定了,下面记录一下我解决的过程。 1. 查看matplotlib支持的中文字体 ... 阅读全文
posted @ 2015-03-17 18:42 NW_KNIFE 阅读(4518) 评论(0) 推荐(0) 编辑
摘要: /** 将多个集合合并成没有交集的集合。 给定一个字符串的集合,格式如:{aaa,bbb,ccc},{bbb,ddd},{eee,fff},{ggg},{ddd,hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集, 例如上例应输出{aaabbbcccdddhhh},{eeefff... 阅读全文
posted @ 2014-11-06 16:41 NW_KNIFE 阅读(819) 评论(1) 推荐(0) 编辑
摘要: import java.util.Scanner;import java.util.List;import java.util.ArrayList;import java.util.Map;import java.util.HashMap;/* 汉字转数字的程序。输入:八亿零二十万零一百零一 ... 阅读全文
posted @ 2014-11-04 12:15 NW_KNIFE 阅读(2980) 评论(0) 推荐(0) 编辑
摘要: #include#includeusing namespace std;/*** 找到链表中的倒数第k个节点*///定义结构体typedef struct Node{ int val; Node* next;} Node;//创建链表Node* createNode(){ int ... 阅读全文
posted @ 2014-10-30 10:17 NW_KNIFE 阅读(490) 评论(0) 推荐(0) 编辑
摘要: #include#includeusing namespace std;//定义结构体typedef struct Node{ int val; Node* next;} Node;void swap(Node* a,Node* b){ int tmp = a->val; a... 阅读全文
posted @ 2014-10-30 09:52 NW_KNIFE 阅读(7208) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示