操作环境:
CentOS 7
、
Gcc 4.8.5
、
Python 3.10.0
系统上已经有
2.x
,
3.6
版本的
Python
了,但是还是想装一个
3.10
的。因为刚写的脚本文件是较高版本的,在
3.6
上无法正常运行,
Python
语法不是很了解,只能从环境上下手了。
【注】Python 其他版本也适用,毕竟是编译器的问题,并非 Python 版本问题。
下载源码文件,然后开始执行操作:
./configure --enable-optimizations
makesudomakeinstall
然后报错如下,下面是两个机器不同的报错:
# 报错一:
gcc -pthread-Xlinker -export-dynamic -o python Programs/python.o libpython3.10.a -lcrypt-lpthread-ldl-lutil-lm-lm
./python -E-S-m sysconfig --generate-posix-vars ;\iftest$?-ne0;then\echo"generate-posix-vars failed";\rm-f ./pybuilddir.txt ;\exit1;\fi
Could not import runpy module
Traceback (most recent call last):
File "/opt/Python-3.10.0/Lib/runpy.py", line 15, in<module>import importlib.util
File "/opt/Python-3.10.0/Lib/importlib/util.py", line 14, in<module>
from contextlib import contextmanager
File "/opt/Python-3.10.0/Lib/contextlib.py", line 4, in<module>import _collections_abc
SystemError: <built-in function compile> returned NULL without setting an exception
generate-posix-vars failed
make: *** [pybuilddir.txt] Error 1
# 报错二:make build_all CFLAGS_NODIST=" -fprofile-use -fprofile-correction"LDFLAGS_NODIST=""
make[1]: Entering directory `/usr/local/src/Python-3.10.0'
./python -E-S-m sysconfig --generate-posix-vars ;\iftest $? -ne0;then\echo"generate-posix-vars failed";\rm-f ./pybuilddir.txt ;\exit1;\fi
Could not import runpy module
Traceback (most recent call last):
File "/opt/Python-3.10.0/Lib/runpy.py", line 15, in<module>import importlib.util
File "/opt/Python-3.10.0/Lib/importlib/util.py", line 14, in<module>
from contextlib import contextmanager
File "/opt/Python-3.10.0/Lib/contextlib.py", line 4, in<module>import _collections_abc
SystemError: <built-in function compile> returned NULL without setting an error
generate-posix-vars failed
make[1]: *** [pybuilddir.txt] Error 1
make[1]: Leaving directory `/opt/Python-3.10.0'
make: *** [profile-opt] Error 2
导致原因
在低版本的
gcc
版本,使用
gcc
命令并带有
--enable-optimizations
参数时会出现上面问题。在
gcc 8.1.0
此问题已经修复。
解决方法
1、升级
gcc
至
8.1.0
,不是很推荐,可能会影响其他软件的编译。
2、
./configure
参数中去掉
--enable-optimizations
。然后执行下面的命令:
./configure
makesudomakeinstall
如果还不行就将解压的
Python
目录删除掉,重新解压,然后重新执行上面的命令。
Python
镇楼!!!点下关注好不好,我想申请博客专家!!! 哭唧唧!!!
个人博客: Roc’s Blog
版权归原作者 Roc.Chang 所有, 如有侵权,请联系我们删除。