LiyuanHu91的个人博客分享 http://blog.sciencenet.cn/u/LiyuanHu91

博文

Python学习(1)——第一次接触——软件安装

已有 500 次阅读 2024-4-9 13:02 |个人分类:计算机使用|系统分类:科研笔记

今天安装一个基于Python的程序,这是第一次接触Python,遇到很多问题,值得一记。

系统:CentOS 7

(1)Python3的安装

简单

yum -y install python3

2)pip安装、升级及其问题

初以为需要用Python2,故安装了pip,并一顿折腾版本升级;但后来发现需要用pip3,而pip3在安装Python3时已经自带了,所以问题不存在了。尽管如此,仍将pip安装与升级过程记录下来。

首先,安装扩展源EPEL:

yum -y install epel-release

而后,安装pip:

yum -y install python-pip

检查是否安装成功:

pip -V

pip升级(开始出问题了):

pip install --upgrade pip

结果显示报错,细节没看,总之升级失败:原本版本8.3.2,最新版本24.0。查阅网络资料得知,“这个问题主要的原因是pip直接升级跨度太大”,解决思路是从邻近版本进行升级:

python -m pip install --upgrade pip==10.0.1

python -m pip install --upgrade pip==18.0

python -m pip install --upgrade pip==20.3.4

最后只升级到这个版本,作罢。

(3)利用pip3安装那个python程序

手册里的命令很简单:

pip install [程序名]

但直接报错,显示不理解程序里的话。没办法,改成

pip3 install [程序名]

跑成功了。原以为大功告成,拿测试输入卡试试吧:

python3 run_test.py

失败!说没有numpy模块,一查可以安装:

pip3 install numpy

OK了。再重新测试输入卡,又失败,说我没有装scipy,那就再装:

pip3 install scipy

OK了。再重新测试输入卡,又失败,说我没有装numba,这回陷入了新的麻烦了。。

pip3 install llvmlite==0.31.0

(这步成功)

pip3 install numba

这步失败,显示缺东西,一查:需要安装LLVM 8.0。开启以下支线任务。

(3.1)LLVM安装

下载LLVM 8.0(即LLVM source code (.sig))及相应的cfe 8.0(即Clang source code (.sig)),而后解压。接着,做如下文件夹整理:

mv llvm-8.0.0.src llvm

mv cfe-8.0.0.src clang

mkdir build

cd build

在路径上并列有llvm、clang、build三个文件夹。

接下来开始编译:

cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_PROJECTS="clang" -G "Unix Makefiles" ../llvm

make -j4

make install

可在.bashrc里指定环境变量

export PATH=/opt/llvm/lib:$PATH

export LLVM_CONFIG=/opt/llvm/bin/llvm-config

在cmake的过程中报错,说我的gcc版本过低(4.9.2),应该至少为5.1。为此再开支线任务,重新更新了gcc版本。

(3.1.1)gcc升级

下载gcc后,解压,而后:

cd gcc-5.1.0

./contrib/download_prerequisities

cd ..

mkdir gcc-5.1.0-build

cd gcc-5.1.0-build

../gcc-5.1.0/configure --enable-checking=release --enable=languages=c,c++,fortran --disable-multilib

make -j4

make install

gcc --version

尽管此时已经显示5.1.0的版本了,但cmake时仍然显示4.9.2的gcc,查到资料里说:gcc默认安装路径是/usr/local/bin,而cmake找的是/usr/bin,为此进行检查:

gcc --version

g++ --version

c++ --version

均显示为5.1.0;

/usr/bin/gcc --version

/usr/bin/g++ --version

/usr/bin/c++ --version

均显示为4.9.2。解决方案为新建符号链接:

rm -rf /usr/bin/gcc

ln -s /usr/local/bin/gcc /usr/bin/gcc

rm -rf /usr/bin/g++

ln -s /usr/local/bin/g++ /usr/bin/g++

rm -rf /usr/bin/c++

ln -s /usr/local/bin/c++ /usr/bin/c++

如此处理后,再次cmake调用的就是新版gcc了(gfortran未新建符号链接)。

cmake通过,满心欢喜,make时又报错:/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found。于是新支线任务启动!

(3.1.2)/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的解决

资料中说:调用的是高版本的gcc,生成的动态库没有替换老版本的gcc的动态库。解决方法如下:

首先查询libstdc++.so.6支持版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBC

显示了很多动态库文件GLIBCXX,最大版本号到3.4.20,确实没有3.4.21。

再查阅原来的libstdc++.so.6版本:

ll /usr/lib64/libstdc++.so.6

显示其指向libstdc++.so.6.0.20。

在本地搜寻libstdc++.so.6的高版本(亦可从网上查找):

find / -name "libstdc++.so.6.0"

结果发现在/usr/local/lib64里有一个libstdc++.so.6.0.21,故将其复制到/lib64中,而后删除原来的链接,新建新的软链接:

ln -s /lib64/libstdc++.so.6.0.21 /lib64/libstdc++.so.6

再查一下libstdc++.so.6版本

ll /usr/lib64/libstdc++.so.6

显示其指向libstdc++.so.6.0.21。

搞定(这一步)!

=====>>>>

回归主线numba,折腾半天还是不对劲,但是我执行了这样一句

pip3 install numba==0.48.0

居然成功了!!!

新错误:说我没有装matplotlib,查阅资料处理:

yum update python-devel

yum install python3-devel

(不写第一句会报错冲突)

(不执行这一步,在下一步会出现致命错误:Python.h没有那个文件或目录!)

而后:

pip3 install matplotlib

安装成功!

(4)python程序安装成功了,可是画图有点问题。。。但也解决啦!

以test.py作为输入卡名:

python3 test.py

又出现一个报错:

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

plt.show()

还是耐心地处理吧!

查资料!

在test.py文件中的import matplotlib.pyplot as plt前加上两句话,即

import matplotlib

matplotlib.use('TkAgg')

import matplotlib.pyplot as plt

但此时会报错:ModuleNotFoundError: No module named 'tkinter'。为此安装tkinter(Centos下):

yum install python3-tkinter

这回可以啦!

(安装好tkinter后不用再添加import matplotlib和matplotlib.use('TkAgg')这两句了

python3 test.py

既得到了结果,也生成了图片!

此外,还了解到可以用以下语句:

plt.savefig('my-plot.png')

这可以直接保存图片。

一个上午+一个晚上的辛劳终于有所收获,不但推进了工作的进程,还接触了如此神奇的python语言和各种小技巧,能够睡个香香的觉啦!

2024年4月9日 夜11:00     

【参考资料】

(1)CentOS 使用yum安装 pip · Python / Linux / Mysql / 软件测试等等 · 看云 (kancloud.cn)https://www.kancloud.cn/zjut_cheng/python_linux_mysql/2075809

(2)centos 升级pip报错问题 - 简书 (jianshu.com)https://www.jianshu.com/p/a2cb5c2ec820

(3)【pip】CentOS7.x 升级pip失败报错处理_centos7更新pip报错-CSDN博客

https://blog.csdn.net/michaelwoshi/article/details/115220421

(4)python enum 安装 python numba安装_deanyuancn的技术博客_51CTO博客

https://blog.51cto.com/u_13544/6679977

(5)numba的安装: No module named numba_no module named 'numba-CSDN博客

https://blog.csdn.net/mao_hui_fei/article/details/120853017

(6)Python安装llvmlite、numba报错解决方案-CSDN博客https://blog.csdn.net/qq_41977618/article/details/119572879

(7)【arm64】LLVM 8.0.0 安装 - 简书 (jianshu.com)

(8)LLVM Download Pagehttps://releases.llvm.org/download.html

(9)linux编译gcc5.1.0,Linux编译安装GCC 5.1.0-CSDN博客https://blog.csdn.net/weixin_29066781/article/details/116829756

(10)linux手动安装gcc-5.1.0「建议收藏」-腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/2091112

(11)清华大学开元镜像源里的gcc:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-5.1.0/gcc-5.1.0.tar.gz

(12)CentOS7源码编译安装LLVM_centos7 llvm-CSDN博客https://blog.csdn.net/qq_35139125/article/details/129393091

(13)CentOS7 上cmake 生成旧版gcc_cmake 安装完怎么还是旧版本-CSDN博客https://blog.csdn.net/ivy202/article/details/135023252

(14)搞定libstdc++.so.6 version GLIBCXX_3.4.21 not found-CSDN博客https://blog.csdn.net/duzm200542901104/article/details/132218862

(15)Matplotlib is currently using agg, which is non-GUI backend | bobbyhadzhttps://bobbyhadz.com/blog/user-warning-matplotlib-is-currently-using-agg-which-is-non-gui

(16)ModuleNotFoundError: No module named 'tkinter' in Python | bobbyhadzhttps://bobbyhadz.com/blog/python-no-module-named-tkinter

(17)解决UserWarning: Matplotlib is currently using agg, which is a non - 哔哩哔哩 (bilibili.com)https://www.bilibili.com/read/cv23193866/



https://wap.sciencenet.cn/blog-3121583-1428864.html

上一篇:利用pdftk处理pdf
收藏 IP: 221.212.116.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-14 22:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部