Pydroid3无法访问并执行Python 3.10二进制文件问题求助
解决Pydroid3替换Python版本后无法执行二进制文件的问题
排查与修复步骤
检查Python 3.10二进制文件的执行权限
执行命令:ls -l /实际路径/python3.10
确认权限位包含x(例如-rwxr-xr-x),如果没有执行权限,运行:chmod +x /实际路径/python3.10检查目标文件所在目录的访问权限
父目录需要具备读和执行权限(r-x),否则Pydroid3用户无法访问目录内的文件。执行命令:ls -ld /实际路径/(此处为Python3.10所在的上级目录),权限不足时运行:chmod o+rx /实际路径/处理安卓SELinux限制(核心解决点)
安卓默认开启SELinux强制模式,即便文件权限正确,上下文不符也会被拦截执行。可临时关闭测试:su -c setenforce 0,若此时能正常执行,说明是SELinux问题。
永久修复需给Python3.10设置与Pydroid3原Python文件一致的SELinux上下文:- 查看原文件上下文:
ls -Z /data/user/0/ru.iiec.pydroid3/files/bin/python3(替换为你的Pydroid3实际路径) - 给Python3.10同步上下文:
su -c chcon 查到的上下文值 /实际路径/python3.10
- 查看原文件上下文:
重新创建符号链接
用Pydroid3用户创建时务必使用绝对路径,命令:ln -s /绝对路径/python3.10 /data/user/0/ru.iiec.pydroid3/files/bin/python3
关键说明
符号链接本身的权限不影响访问,真正起作用的是目标文件的执行权限、SELinux上下文,以及目标文件所在目录的访问权限。之前的权限问题,本质是SELinux上下文未同步,而用户创建链接后仍无法执行,大概率是目标文件缺少执行权限或SELinux拦截。
内容的提问来源于stack exchange,提问作者Loup Garou
相关产品推荐
相关产品推荐

