如何修复Django配置SAML时出现的找不到xmlsec.exe/xmlsec1.exe错误?
解决saml2.sigver.SigverError: Cannot find ['xmlsec.exe', 'xmlsec1.exe']错误
嘿,这个问题我之前在Windows环境下折腾Django SAML2认证的时候也踩过坑!本质原因是虽然你成功装了xmlsec包,但Python的saml2库没办法自动定位到它的可执行文件——要么是exe所在路径没加入系统环境变量,要么是没在Django配置里明确指定位置。给你几个靠谱的解决办法:
方法1:把xmlsec.exe路径加入系统环境变量
- 先找到你的Python环境里xmlsec.exe的具体位置:如果是虚拟环境,一般在
虚拟环境目录\Lib\site-packages\xmlsec下;如果是全局安装,大概率在Python安装目录\Lib\site-packages\xmlsec或者Scripts文件夹里 - 复制这个文件夹的绝对路径,比如
C:\Python36\Lib\site-packages\xmlsec - 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量的
PATH列表里添加刚才复制的路径 - 重启你的命令行工具或者IDE(环境变量需要重启才会生效),再启动Django服务器试试
方法2:在Django配置里直接指定xmlsec路径
如果不想折腾系统环境变量,也可以直接在settings.py的DJANGO_SAML2_AUTH配置块里加一项XMLSEC_PATH,明确告诉库exe的位置:
DJANGO_SAML2_AUTH = { # 你的其他SAML配置项... 'XMLSEC_PATH': 'C:\\Python36\\Lib\\site-packages\\xmlsec\\xmlsec1.exe', # 或者用原始字符串避免转义:r'C:\Python36\Lib\site-packages\xmlsec\xmlsec1.exe' }
记得把路径换成你实际的exe所在位置。
验证是否生效
可以打开命令提示符,直接输入xmlsec1.exe,如果能看到命令行输出(而不是「找不到命令」),说明环境变量配置成功了;如果用方法2,直接重启Django服务器,看错误是否消失就行。
内容的提问来源于stack exchange,提问作者Nessi
相关产品推荐
相关产品推荐

