执行flask deploy报OSError:未找到nacl lib/libsodium库怎么办
问题现象
基于Python+Flask在PyCharm中创建项目,执行flask deploy命令时触发报错:
OSError: Could not locate nacl lib, searched for libsodium
报错根因
项目依赖的PyNaCl库运行需要底层libsodium(又称nacl)动态链接库支持,当前运行环境未安装该系统库,或库安装路径未被Python解释器识别,就会抛出该错误。
解决步骤
- 安装对应环境的libsodium依赖并重装PyNaCl
根据你使用的操作系统执行对应命令:
- Windows:直接执行命令重装带预编译二进制的PyNaCl包即可,无需单独安装系统库
pip install --force-reinstall pynacl - macOS:先通过Homebrew安装系统层libsodium,再重装PyNaCl
brew install libsodium pip install --force-reinstall pynacl - Ubuntu/Debian系列Linux:先通过apt安装系统依赖,再重装PyNaCl
sudo apt update && sudo apt install -y libsodium23 libsodium-dev pip install --force-reinstall pynacl - CentOS/RHEL系列Linux:先通过yum安装系统依赖,再重装PyNaCl
sudo yum install -y libsodium libsodium-devel pip install --force-reinstall pynacl
- 核对PyCharm的解释器配置
新手最容易踩环境不匹配的坑,按以下步骤检查:
- 打开PyCharm
Settings > Project: 你的项目名 > Python Interpreter,确认当前选中的解释器是项目实际使用的解释器(如果是新建项目默认创建的venv虚拟环境,路径一般在项目目录下的venv/bin/python(macOS/Linux)或venv\Scripts\python.exe(Windows)) - 最稳妥的安装方式是直接点击PyCharm底部的
Terminal面板,在弹出的命令行里直接执行上面的安装命令,这个面板会自动激活当前项目绑定的虚拟环境,不会出现包装到其他环境的问题 - 安装完成后,终止之前运行失败的
flask deploy进程,重新执行命令即可
- 残留问题排查
如果完成以上步骤还是报错,先在当前项目的Python环境中执行import nacl验证:
- 如果执行该导入语句就报同样的找不到libsodium错误,说明系统找不到libsodium的库路径,把libsodium的安装目录添加到系统环境变量:Linux/macOS加到
LD_LIBRARY_PATH,Windows加到PATH,添加完成后重启PyCharm让环境变量生效 - 如果导入不报错,检查Flask部署配置里有没有硬编码的库路径,删除错误的路径配置即可
提示:部分Linux发行版的软件源中PyNaCl包没有内置预编译的libsodium二进制,必须先安装系统层的libsodium-dev包才能正常编译安装PyNaCl,不要跳过系统依赖安装步骤直接装Python包。
内容的提问来源于stack exchange,提问作者Passang Lhamo
相关产品推荐
相关产品推荐

