python - 除非从根目录运行,否则 Python 库不会加载
问题描述
我有一些代码正在使用 dlib,但是当我尝试在我的 python 代码中导入 dlib 时,我得到了这个错误:
File "boom.py", line 32, in <module>
from faceSwap import *
File "/home/user/coding/faceSwap.py", line 22, in <module>
import dlib
ImportError: libboost_python-py27.so.1.49.0: cannot open shared object file: No
such file or directory
但是,当我以 root 身份运行它时 - 它运行得很好!但是我不想以 root 身份运行守护进程 - 所以我很想解决这个问题。我尝试通过 PIP 多次卸载/重新安装 dlib,但均未成功。
当我检查库时,它似乎确实从 root 和用户级别帐户中丢失,即使 DLIB 实际上在 python 程序以 root 身份运行时运行:
用户:
$ whereis libboost_python-py27.so.1.49.0
libboost_python-py27.so.1.49:
根:
# whereis libboost_python-py27.so.1.49.0
libboost_python-py27.so.1.49:
root 和用户帐户都使用相同的 python
/usr/local/bin/python
我唯一的线索是用户帐户 dlib 无法查找:
/usr/lib/libboost_python-py27.so.1.49.0
但是根目录有效并且似乎正在使用:
/usr/local/lib/python2.7/dist-packages/dlib.so
有什么想法可以解决这个问题或解决它吗?
解决方案
您可以尝试几件事:
1) 确保您使用与 root 和普通用户相同版本的 python。which python
应该在基于 Unix 的操作系统上工作。以 root 身份尝试并比较以查看 python 安装是否相同。
2)重新安装升压。确保它是正确的版本。尝试使用pip
这样做。
3)如果是权限问题,可以修改相关目录的权限,chown
保证程序可以访问。不建议这样做。而且我认为这不是问题,因为错误是说它找不到libboost
。这意味着安装存在一些问题。
4) 从源代码安装 dlib。这很容易。在这里查看更多信息:http ://dlib.net/compile.html 。基本上下载最新版本并python setup.py install
从主 dlib 文件夹运行。如果您需要更多帮助,我可以指导您完成此操作。
推荐阅读
- github - 来自github的snakemake模块改变了目标?
- mysql - 在 laravel 迁移中设置默认的空数组
- python - C++ 中的 ()() 运算符是什么?
- python - python:继续迭代,直到满足某个条件
- prometheus - Prometheus Net AspNet Core 不支持 http2 协议
- r - 根据 R 中的日期创建列表
- python - pandas cumsum 工作不正确
- azure - 如何将 Excel 文件中的密钥导入 Azure 密钥保管库
- javascript - Nextjs 静态导出重定向问题
- loops - 如果该列的任何行中都没有内部颜色,则删除该列