centos安装python3.11.1
源码编译:
https://leib46rx0g.feishu.cn/docx/W6yNdY2aboG8f5x70IQcke4Snaf
# 安装akshare结果报错
pip install aktools
#后台运行:
python -m aktools --host 0.0.0.0 --port 8080 &>/dev/null&
遇到的问题
pip3 install --upgrade pip
pip3 install aktools==0.0.14
-
缺少模块
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named ‘_ctypes
yum -y install zlib-devel python-devel gcc libffi-devel tk-devel libpcap-devel bzip2-devel db4-devel xz-devel openssl-devel ncurses-devel patch readline-devel gdbm-devel sqlite-devel
akshare文档:
安装后yum和supervisorctl报错:
python echo.py
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = 'python'
isolated = 0
environment = 1
user site = 1
safe_path = 0
import site = 1
is in build tree = 0
stdlib dir = '/usr/local/lib/python3.11'
sys._base_executable = '/usr/bin/python'
sys.base_prefix = '/usr/local'
sys.base_exec_prefix = '/usr/local'
sys.platlibdir = 'lib'
sys.executable = '/usr/bin/python'
sys.prefix = '/usr/local'
sys.exec_prefix = '/usr/local'
sys.path = [
'/usr/local/lib/python311.zip',
'/usr/local/lib/python3.11',
'/usr/local/lib/python3.11/lib-dynload',
]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00007f4a66282740 (most recent call first):
<no Python frame>
这是因为yum和supervisor使用的是python2版本,现在不兼容python3了,因此需要修改相关的配置:
[root@VM-20-2-centos ~]# whereis python2
python2: /usr/bin/python2 /usr/bin/python2.7-config /usr/bin/python2.7 /usr/lib/python2.7 /usr/lib64/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz
解决yum报错:
介绍yum
yum采用python2.x作为命令解释器
vi .usr/bin/yum 进入yum中第一行就可知道使用的是默认python,
而最初CentOS就是只有python2的版本
为什么会出现错误信息
安装python3后,你将python默认的解释器修改为了python3了
而python版本之间兼容性不太好,使得2.X版本与3.0版本之间存在语法不一致问题。
而CentOS 自带的yum采用的是python2,当系统将python升级到3版本后,出现语法解释错误。
解决方案
只需要进入以下文件:
vi .usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
vi /usr/bin/yum-config-manager
后将第一行的python还原为python2就可以解决了
解决supervisor报错:
有时系统安装了 python3
和 python2
,且 python3
为默认版本,安装启动 supervisor
时就报错了。
yum install supervisor
编辑以下3个文件,将开头的 python 解释器路径指定为 2 版本的即可。
vim /usr/bin/echo_supervisord_conf
vim /usr/bin/supervisorctl
vim /usr/bin/supervisord
启动
systemctl start supervisord.service
示例
/etc/supervisord.d/demoQueue.ini
[program:demo]
directory = /www/wwwroot/demo ;启动目录
command = php think queue:work --queue demoQueue --daemon ;启动命令
autostart = true ;在supervisord启动的时候也启动
startsecs = 5 ;启动5秒后没有异常退出,就当作已经正常启动了
autorestart = true ;程序异常退出后自动重启
startretries = 3 ;启动失败自动重试次数,默认是3
user = www ;哪个用户启动
redirect_stderr = true ;把stderr重定向到stdout,默认false
stdout_logfile_maxbytes = 20MB ;stdout日志文件大小,默认50MB
stdout_logfile_backups = 7 ;stdout日志文件备份数
stdout_logfile = /www/wwwroot/supervisor/demo/demoQueue.log ;stdout日志文件
systemctl restart supervisord.service
supervisorctl star/stop demoQueue
supervisorctl status demoQueue
supervisorctl update #重启配置文件发生改动的程序
supervisorctl reread #载入新的配置文件
supervisorctl restart #重启某个应用
supervisorctl reload #重启 supervisor