pip安装mkdocs后报zsh: permission denied: mkdocs如何解决
你之前的判断有误,zsh: permission denied: mkdocs 报错和/Library目录跨用户访问权限没有关系。
pip全局安装Python包时,库存放的site-packages目录和可执行脚本的bin目录是分开的,出现这个报错通常只有两种可能:一是你在~/.zshrc里配置的PATH路径错指到了无执行权限的文件,二是mkdocs对应的可执行脚本本身没加可执行权限位。
1. 定位mkdocs可执行文件的真实位置
你之前用pip3 show查到的是Python库的存放路径,可执行入口不在这个目录下,执行以下命令查找真实的可执行文件路径:
find /Library/Frameworks/Python.framework/Versions/3.10/ -name mkdocs -type f
正常返回的路径会是/Library/Frameworks/Python.framework/Versions/3.10/bin/mkdocs,属于Python框架的bin目录层级,而非site-packages目录。
2. 修正zsh的PATH配置
打开~/.zshrc,删掉之前错误添加的mkdocs路径配置,替换为正确的bin目录路径:
export PATH="/Library/Frameworks/Python.framework/Versions/3.10/bin:$PATH"
保存退出后执行source ~/.zshrc让配置即时生效。
3. 补全可执行权限
执行以下命令给mkdocs脚本添加可执行权限:
chmod +x /Library/Frameworks/Python.framework/Versions/3.10/bin/mkdocs
如果提示权限不足,在命令前加sudo执行,输入本机开机密码即可。
可选:彻底规避全局权限问题的方案
如果不想修改系统级目录的权限配置,可以直接卸载全局安装的mkdocs,改用用户级安装,全程不需要sudo权限,也不会出现访问权限冲突:
# 卸载原有全局版本 sudo pip3 uninstall -y mkdocs # 安装到当前用户专属目录 pip3 install --user mkdocs
用户级安装的可执行文件默认存放在~/Library/Python/3.10/bin路径下,把这个路径加到~/.zshrc的PATH配置里即可,不会影响系统其他配置。
配置完成后执行mkdocs --version,正常返回版本信息即代表配置生效。
注意:不要为了省事直接给整个/Library目录设置777权限,会破坏系统原生权限结构,后续大概率出现更多环境异常。
内容的提问来源于stack exchange,提问作者Enrico Bottazzi

