Linux CentOS6.5系统本来自带有python2.6,但是使用过程中发现有很多问题,所以准备升级Python3,同时暂时保存原来的python2,过程中遇到很多问题,在此记录一下。
https://www.python.org/downloads/
在此我选择的是python3.6.5,点击进入详情页:
在此选择自己需要的版本,linux系统要选择上面的两个源码版本,我选择的是第一个gzip格式的,下载下来。
cd Python-3.6.5
./configure --prefix=/usr/local/python3.6.5 (注意这里要带--prefix来指定安装的位置)
make && make install
当看到如下信息,说明安装成功了,同时自动安装了setuptools、pip:
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-9.0.3 setuptools-39.0.1
PATH=$PATH:$HOME/bin:/usr/local/python3.6.5/bin
export PATH
至此,python3已经在linux中安装好了
二、linux中手动安装Python3常用模块
安装好python后,经常需要下载各种模块和库,一般都是使用pip来install,非常方便。但是不幸的是我安装的服务器用的公司内网,不能联外网,所以pip没用,只能手动一个个下载安装
1、先来下载python3常用库:
https://pypi.org/
在这里搜索需要的库名就行了,非常全,比如常用的beautifulsoup,搜索出现的结果:
我选择的第二个,进去选择Download files
2、下载需要的版本,上传到linux上python安装目录的lib目录下(我这里是/usr/local/python3.6.5/lib/目录):
解压文件:tar -xzvf beautifulsoup4-4.6.0.tar.gz
进入解压后的目录:cd beautifulsoup4-4.6.0
python3 install安装库:python3 setup.py install(如果提示python3命令找不到,那就加上完整路径,说明之前的环境变量没有设置成功),过一会就会提示安装完成了。
这样一个python库就安装好了,如果需要别的库,就按这样的方法继续安装吧(虽然很麻烦)
三、修改原来的python2代码,来符合python3语法
1、print语句:
print "hello world" #python2中语法
print("hello world") #python3中语法
print("new %s version is %d, print must have ()"%("Python", 3)); #python3中语法
可能会提示缺少各种python库,按照提示一个个安装就好了
解决办法:
from importlib import reload;
reload(module_name)
因为在python2中reload是内置模块,但在python3中,需要从importlib中导入。
因为在python3中默认使用的就是utf8编码格式,而且python3中sys库已经没有setdefaultencoding()方法了
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import imp
imp.reload(sys)
import importlib
importlib.reload(sys)
解决办法:把原来的d.keys()改为list(d.keys())
Python 3 renamed dict.iteritems -> dict.items
7、
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbc in position 3: invalid start byte 这是编码不一致,根据自己的文件编码来定义,我这里用的是iso-8859-1
解决办法:先用list强制转换后再用len()