You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS下已安装xmpppy仍提示No module named 'xmpp'如何解决

问题场景

执行包含import xmpp,sys的Python脚本时抛出如下错误:

ModuleNotFoundError: No module named 'xmpp'

已执行pip install xmpppy安装对应依赖,且已验证脚本内print(sys.version)输出的版本号,与命令行执行python --version返回的版本号完全一致。
附完整测试脚本:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import xmpp,sys

xmpp_jid = 'me@jabber.server'
xmpp_pwd = 'hackme'

to = sys.argv[1]
msg = sys.argv[2]

jid = xmpp.protocol.JID(xmpp_jid)
client = xmpp.Client(jid.getDomain(),debug=[])
client.connect()
client.auth(jid.getNode(),str(xmpp_pwd),resource='xmpppy')
client.send(xmpp.protocol.Message(to,msg))
client.disconnect()
可行排查方向
  • 修正依赖安装的调用方式:不要直接用pip install安装,改用当前脚本调用的Python解释器直接执行pip模块安装,命令为python -m pip install xmpppy。CentOS环境常存在多套pip共存的情况,哪怕版本号显示一致,直接调用pip可能将包装到了其他Python环境的包目录下,和运行脚本的解释器路径不匹配,用解释器自带的-m pip参数可以100%保证包装到当前Python的对应路径下。
  • 验证模块搜索路径与权限:在脚本导入xmpp的代码前加两行代码,打印Python的模块搜索路径列表:
    import sys
    print(sys.path)
    
    执行python -m pip show xmpppy拿到依赖安装的Location路径,检查该路径是否在上面打印的路径列表中;同时进入该Location对应的目录,检查xmpp文件夹的读权限,若权限配置为仅root可读写,普通用户运行脚本时无法读取模块文件,也会抛出模块不存在的错误,这种情况给目录加全局读权限,或者加--user参数给当前用户重新安装一次用户级依赖即可。
  • 排查同名文件冲突:检查脚本所在的工作目录下,是否存在命名为xmpp.py的文件、或是名为xmpp的文件夹,Python导入模块时会优先检索当前工作目录,同名的自定义文件/文件夹会覆盖第三方库的导入逻辑,直接导致导入失败,把这类冲突文件重命名即可。
  • 验证依赖安装完整性:执行python -m pip show xmpppy拿到安装路径后,进入路径下的xmpp目录,检查是否存在__init__.py、protocol.py等核心文件,若文件缺失说明之前安装过程中因为网络、权限问题安装不完整,先执行python -m pip uninstall -y xmpppy卸载残留,再重新执行安装命令即可。
  • 排查系统源包冲突:如果之前通过yum安装过系统源自带的python-xmpp包,大概率会和pip安装的xmpppy产生路径冲突,先执行yum remove -y python-xmpp卸载系统自带的旧版本包,再重新通过pip安装xmpppy即可。

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 03:00:23