源码编译:
https://leib46rx0g.feishu.cn/docx/W6yNdY2aboG8f5x70IQcke4Snaf

# 安装akshare结果报错
pip install aktools

#后台运行:
python -m aktools --host 0.0.0.0 --port 8080 &>/dev/null&

遇到的问题

  1. Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-*解决办法

pip3 install --upgrade pip
pip3 install aktools==0.0.14
  1. 缺少模块

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文档:

http://xxx:8080/docs

安装后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报错:

有时系统安装了 python3python2,且 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
所有用户都可以去薅羊毛,192元充值200元话费!先到先得!导航栏话费充值,正规可靠,快充慢充自由选择。
欧阳逸资源站 » centos安装python3.11.1

发表评论