Linux CentOS安装Python3.7.3以及纠错

简介: Linux CentOS安装Python3.7.3以及纠错

尝试在CentOS7上安装Python3.7,对一个新手来说,还是有挺多东西需要注意的。具体步骤如下:


1、下载

下载python3,wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

解压到本地目录,比如现在在/home/user1,会在当前目录产生一个Python-3.7.3目录。

tar -xzvf Python-3.7.3.tgz


2、make安装

进入Python-3.7.3目录,先configure

./configure --prefix=/usr/local/python3.7.3

成功(此时已经将安装文件放到/usr/local的目录了)。


make && make install


麻烦了,出错了。提示:Module Not Found Error: No module named '_ctypes'

那么理论上我应该找到_ctypes才行。


查了一下csdn前辈们的足迹,原来3.7版本需要一个新的包libffi-devel,安装此包之后再次进行编译安装即可。这个问题归属于python的错误31652 https://bugs.python.org/issue31652

#yum install libffi-devel -y
    #make install


如果……又很不幸,先把原来的python2给删除了,恭喜,又中奖了。那么需要去centos.org上面找rpm包,以rpm方式安装libffi。这里不再赘述。当然,你在百度上面libffi centos rpm,就能在rpmfind.NET上找到下载,注意选择自己的操作系统版本啊。


查了一下这个issue,哇btw,Ubuntu也会出现问题的,这里有一个18版本的依赖大礼包:

> I expect that the root cause is missing libffi(-dev[el]) on your system
Yes, on my Ubuntu 18.04, `make` failed to compile _ctypes module.
After install libffi-dev, it was compiled successfully:
One more word, full necessary dependencies on my Ubuntu 18.04:
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-dev


如果libffi安装到了别的地方……参考以下:

 

the reason was that libffi was installed under /opt/local, so the fix was:
    ./configure LDFLAGS='-L/opt/local/lib -R/opt/local/lib'


3、建立快捷方式(链接)


完了么?没完。此时,/home/user1/python3.7.3中应该有python可执行程序了,但是系统可能还不知道,在任何一个目录输入python时,到make之后的目录找python程序。如果是系统自带,我的是python2.7,运行一下python,会告知你这是:2.7.5。或者python --version,可以看到输出版本号。


再找到软链接。查看python命令在当前系统对应哪一个文件。


>whereis python
python: /usr/bin/python ...

查看这个python对应的是什么 ls -al /usr/bin/python

/usr/bin/python -> python2


让我们用一个软链接指向新安装的python3这里吧。


mv  ./python pythonold
#将原来的python链接改名
cp /usr/local/python3.7.3/python3 /usr/bin/python3
#拷贝新的python到bin目录,这也是一个链接文件,指向的是local/python3.7.3下面的python3.7
ln -s ./python3 ./python
#如果连接文件已经有了,我也可以直接修改连接文件来建立链接
ln -snf /usr/local/python3.7.3/python3 /usr/bin/python


现在输入python看到version是3.7.3了。进入python解释环境之后:

>>import time
>>print(time)
<module‘time(built-in)’>
>>import sys
>>print(sys.path)
['', '/usr/local/python3.7.3/lib/........']


4、建立pip


还有一个东西没装,pip。在/usr/local/python3.7.3/bin下面可见pip3

ln -s /usr/local/python3.7.3/bin/pip3 /usr/bin/pip

#建立pip到pip3的链接


python3.7是没有安装numpy的,安装一个试试:

pip install numpy

如果正常的开始collecting,就没问题了。



目录
相关文章
|
12天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
111 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
14天前
|
Linux 测试技术 网络安全
Linux系统之安装OneNav个人书签管理器
【10月更文挑战第19天】Linux系统之安装OneNav个人书签管理器
36 5
Linux系统之安装OneNav个人书签管理器
|
16天前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
38 5
Linux系统之安装Ward服务器监控工具
|
18天前
|
JSON JavaScript Linux
Linux系统之安装cook菜谱工具
【10月更文挑战第15天】Linux系统之安装cook菜谱工具
32 2
Linux系统之安装cook菜谱工具
|
21天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
75 4
Linux系统之Ubuntu安装cockpit管理工具
|
21天前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
48 1
Linux系统之Centos7安装cockpit图形管理界面
|
6天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
19 3
|
7天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
15 2
|
9天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
11天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
33 2