Databricks中使用pymystem3报permission denied如何解决
pymystem3调用报Permission Denied权限错误解决方案
问题根因
pymystem3首次运行初始化时,会自动下载对应系统版本的mystem原生二进制执行文件到自身安装目录,后续分词、词形还原等所有功能都需要调用这个二进制文件。如果pymystem3被安装在系统级Python依赖目录(Linux/macOS下的/usr/lib/pythonX.Y/site-packages、Windows下的C:\Program Files\PythonXX\Lib\site-packages),普通用户账号默认没有该目录的写入权限,也没有该目录下二进制文件的执行权限,就会触发权限拒绝报错。
可行解决方案
按操作成本从低到高排序,任选其一即可:
方案1:给pymystem3目录开放当前用户权限
先执行命令查询pymystem3的安装路径:pip show pymystem3命令返回结果中
Location字段的值就是Python依赖安装根目录,进入该目录下的pymystem3文件夹,执行以下命令分配权限:# Linux/macOS执行,将<path_to_pymystem3>替换为你查到的pymystem3文件夹完整路径 sudo chown -R $USER:$USER <path_to_pymystem3> sudo chmod +x <path_to_pymystem3>/mystemWindows下可以右键点击pymystem3文件夹,选择「属性-安全-编辑」,给当前登录用户勾选「完全控制」权限后保存即可。
方案2:使用虚拟环境隔离依赖
不要直接在系统全局Python环境安装依赖,新建当前用户拥有完整权限的虚拟环境安装pymystem3,从根源规避系统目录权限限制,操作步骤:# 1. 进入你的项目目录,新建虚拟环境 python -m venv .venv # 2. 激活虚拟环境 # Linux/macOS执行: source .venv/bin/activate # Windows执行: # .venv\Scripts\activate # 3. 虚拟环境内重新安装pymystem3 pip install pymystem3保持虚拟环境激活状态运行业务代码即可。
方案3:手动指定mystem二进制存储路径
初始化Mystem实例时,主动传入你有完整读写执行权限的目录作为二进制存储位置,避开无权限的系统安装目录,示例代码:import os from pymystem3 import Mystem # 用当前用户目录下的缓存文件夹存mystem二进制,该目录默认对当前用户开放全部权限 mystem_cache = os.path.expanduser("~/.cache/pymystem3") os.makedirs(mystem_cache, exist_ok=True) # 初始化时指定二进制文件路径 m = Mystem(mystem_bin_file=os.path.join(mystem_cache, "mystem")) # 后续正常调用接口即可 print(m.lemmatize("Я люблю русский язык"))
补充说明:
- 首次初始化需要联网下载mystem二进制文件,如果网络不通也会触发类似报错,可手动下载对应系统版本的mystem二进制放到指定目录跳过自动下载步骤。
- Windows环境临时调试的话,可以右键点击终端/IDE图标选择「以管理员身份运行」,跑一次代码完成mystem二进制的下载和权限初始化,后续用普通用户身份运行也可正常调用。
内容的提问来源于stack exchange,提问作者Alex Amaguaya
相关产品推荐
相关产品推荐

