最近应产品部要求,需要将所有服务器上的python升级到3.6,并且安装两个模块:PyMsql和pandas,下边将安装步骤及踩过的坑分享一下。
1.首先想用常规的安装方式进行安装,即用模块包安装。
(模块包下载,百度搜索pypi即可找到)
pymysql模块:
解压压缩包 tar zxvf PyMySQL-0.7.5.tar.gz
进入目录 cd PyMySQL-0.7.5/
构建pyd文件python3 setup.py build
安装模块python3 setup.py install
然后进入python命令行进行测试
[root@localhost ~]# python
Python 3.6.2 (default, Oct 18 2019, 10:10:43)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymysql
>>> (没返回报错证明成功了)
pandas模块,由于numpy是pandas的依赖库,因此需要先安装numpy模块。
解压文件 tar xvf numpy-1.17.tar
进入文件夹 cd numpy-1.17.2/
构建pyd文件 python3 setup.py build
安装 python3 setup.py install
然后安装pandas模块
解压文件 tar zxvf pandas-0.25.1.tar.gz
进入文件夹 cd pandas-0.25.1/
构建pyd文件 python3 setup.py build
安装 python3 setup.py install
安装pandas模块时,总是提示缺少依赖的包,最后决定使用pip这个python工具进行安装
1)安装pip(redhat6安装pip见:https://blog.csdn.net/weixin_43279032/article/details/102853002)
yum -y install epel-release(安装epel扩展源)
yum -y install python-pip(安装pip)
2)按装模块pandas
pip install pandas
报错:
Collecting pandas
Downloading https://files.pythonhosted.org/packages/07/cf/1b6917426a9a16fd79d56385d0d907f344188558337d6b81196792f857e9/pandas-0.25.1.tar.gz (12.6MB)
100% |████████████████████████████████| 12.6MB 59kB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-oJZl2i/pandas/setup.py", line 21, in <module>
import versioneer
File "versioneer.py", line 1629
print("Adding sample versioneer config to setup.cfg", file=sys.stderr)
^
SyntaxError: invalid syntax
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-oJZl2i/pandas/
You are using pip version 8.1.2, however version 19.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
根据提示,升级pip
pip install --upgrade pip
再次安装pandas后成功
pip install pandas
3)测试
[root@yzftp02 ~]# python
Python 3.6.2 (default, Oct 18 2019, 10:00:28)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pandas'
>>>
发现,虽然安装成功了,但是显示没有次模块,原因是pandas模块安装到了python2版本上
[root@yzftp02 ~]# python2.7
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>>
分析原因:查看pip应用程序
[root@yzftp02 ~]# cat /usr/bin/pip
#!/usr/bin/python2
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.main import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
因为我们安装模块时用的pip的默认解释器为python2,所以模块默认安装到了python2上
解决办法:修改pip程序的解释器
[root@localhost ~]# cat /usr/bin/pip
#!/usr/bin/python(升级后的python3版本)
# -*- coding: utf-8 -*-
import re
import sys
from pip import main(此处内容也改了)
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
然后重新安装模块:
[root@yzftp02 ~]# pip install pandas
报错:
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting pandas
Cache entry deserialization failed, entry ignored
Could not fetch URL https://pypi.python.org/simple/pandas/: There was a problem confirming the ssl certificate: Can't connect to HTTPS URL because the SSL module is not available. - skipping
Could not find a version that satisfies the requirement pandas (from versions: )
No matching distribution found for pandas
解决:ssl证书没有认证,那摩就用国内镜像安装
pip install pandas -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
结果成功了,再次进行测试,发现还有报错,不过内容变化了
[root@yzftp02 ~]# python
Python 3.6.2 (default, Oct 18 2019, 10:00:28)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/__init__.py", line 55, in <module>
from pandas.core.api import (
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/core/api.py", line 24, in <module>
from pandas.core.groupby import Grouper, NamedAgg
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/core/groupby/__init__.py", line 1, in <module>
from pandas.core.groupby.generic import ( # noqa: F401
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/core/groupby/generic.py", line 44, in <module>
from pandas.core.frame import DataFrame
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/core/frame.py", line 88, in <module>
from pandas.core.generic import NDFrame, _shared_docs
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/core/generic.py", line 70, in <module>
from pandas.io.formats.format import DataFrameFormatter, format_percentiles
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/io/formats/format.py", line 48, in <module>
from pandas.io.common import _expand_user, _stringify_path
File "/usr/local/Python3/lib/python3.6/site-packages/pandas/io/common.py", line 3, in <module>
import bz2
File "/usr/local/Python3/lib/python3.6/bz2.py", line 23, in <module>
from _bz2 import BZ2Compressor, BZ2Decompressor
ModuleNotFoundError: No module named '_bz2'
从报错内容可以推断,系统缺少了一些依赖的库,解决办法如下:
1)在操作系统中安装zlib和bz2相关库
yum install zlib zlib-devel
yum -y install bzip2 bzip2-devel ncurses openssl openssl-devel openssl-static xz lzma xz-devel sqlite sqlite-devel gdbm gdbm-devel tk tk-devel libffi-devel
2)重新编译安装python3
./configure -prefix=/usr/local/Python3 --enable-optimizations (此参数不可少)
make
make install
此过程时间较长,请耐心等待。。。。。。。
安装完成后再次进行测试:
[root@yzftp02 ~]# python
Python 3.6.2 (default, Oct 18 2019, 17:11:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>>
成功了!