安装

1

下载

1
2
3
4
sudo mkdir /usr/local/python3
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
tar -xzvf Python-3.7.6.tgz
cd Python-3.7.6

后面会缺少_ssl 在这里先安装

1
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ openssl-devel

之后进去

1
vi /root/Python-3.7.6/Modules/Setup.dist

修改结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# Socket module helper for socket(2)
_socket socketmodule.c timemodule.c

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
```
``` shell
yum -y install zlib*
sudo ./configure --prefix=/usr/local/python3

sudo make
sudo make install

配置2个版本共存

创建 python3 的软链接,这样就可以通过 python 命令使用 Python 2,python3 来使用 Python 3。

1
sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3
  1. 修改yum配置文件,将python版本指向以前的旧版本
1
vi /usr/bin/yum

把第一行改成

1
#!/usr/bin/python2.7 

附:vi模式的编辑与退出编辑模式的方法。
进入编辑(insert)模式:按i键
保存并退出编辑模式:先按Esc键,再按Shift+zz(就是按着Shift键,按两下z键,就可以了)

  1. 修改urlgrabber-ext-down文件,更改python版本
1
vi /usr/libexec/urlgrabber-ext-down

把第一行改成

1
#!/usr/bin/python2.7

安装pip

1
2
3
4
5
6
7
wget https://files.pythonhosted.org/packages/a6/5b/f399fcffb9128d642387133dc3aa9bb81f127b949cd4d9f63e5602ad1d71/setuptools-39.1.0.zip
unzip setuptools-39.1.0.zip
cd setuptools-39.1.0
python setup.py install
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

问题

Could not find an available JavaScript runtime

1
yum -y install nodejs

包的导入

在python导包的时候有三条铁规:
  1. 严格区分包和文件夹。包的定义就是包含init.py的文件夹。如果没有init.py,那么就是普通的文件夹。

 

  1. 导入package。  在python 安装目录的site-package文件夹中新建xxx.pth,内容是需要导入的package所在的文件夹路径。

  2. 导入模块。就是一般的模块导入写法,注意只要包路径,不要文件夹路径。

 

解决办法:
  1. 找到你的python安装路径,我的是在 /home/jianping/env/lib/python2.7

  2. 进入python安装路径的site-packages下。即: /home/jianping/env/lib/python2.7/site-packages

  3. 创建一个后缀为.pth的文件:touch xxx.pth

  4. 编辑该pth文件:vi xxx.pth

  5. 将你要导入的包的绝对路径写入到xxx.pth文件中。(注意:一定要是绝对路径,并且要导入的包需要有init.py文件)
    例如:
    /home/jianping/work/package(package是要导入的包)