Python“无法打开共享对象文件:Raspbian 上没有这样的文件或目录”

问题描述 投票:0回答:1

我正在尝试在安装了 Raspbian 的虚拟机上安装 pvrecorder。我得到了一些记录用户麦克风的 Python 脚本,直到触发

KeyboardInterrupt
(用户按下
Ctrl
+
C
)。我已经在我的 Windows 机器上对其进行了测试,一切运行顺利。问题是,我在运行脚本后遇到了一些错误,这来自于安装的
pvrecorder
.

Raspbian 是一个 x86 build.

首先,我使用以下命令创建虚拟环境:

python3 -m venv venv
并使用
source venv/bin/activate
激活它。

然后,我正在安装 pvrecorder

pip3 install pvrecorder
。一切顺利。

问题是,当我尝试运行我的 script.py 时,它以这一行开头:

from pvrecorder import PvRecorder

这是我收到的错误:

OSerror: /home/pi/Desktop/proj/venv/lib/python3.7/site-packages/pvrecorder/lib/linux/i686/libpv_recorder.so: cannot open shared object file: No such file or directory

我也试过 NOT 在单独创建的 venv 中安装

pvrecorder
,但是直接安装,没有激活任何特定的虚拟环境。当我查看
/home/pi/.local/lib/python3.7/site-packages/pvrecorder/lib/linux/
内部时,我没有看到任何
i686
文件夹,而是一个包含我的
x64_86
文件的
.so
文件夹。

当我尝试将该

.so
文件复制到新创建的
i686
文件夹中时,它在尝试启动时给了我另一个错误
script.py

wrong ELF class: ELFCLASS64

我阅读了一些其他类似的 Stack Overflow 答案,用户被告知这可能是因为我正在为 x64 库使用 x86 操作系统,但 pvrecorder 的网站声明他们的模块可用于 x86 和 x64 Raspbian 构建.

python linux debian raspbian
1个回答
0
投票

手动编译

pvrecorder
似乎已经解决了这个问题。

问题是,pip 安装总是导致

x64
库输出。我需要一个
x86
一个。

首先,我需要克隆 pvrecorder 存储库

然后,我安装了

cmake

sudo apt upgrade
sudo apt-get install cmake

然后我编译了模块(按照这个链接 - 官方 GitHub 回购 - 并转到“编译”部分)。

模块编译完成后,需要将生成的

.so
文件从
pvrecorder/build/
(即编译生成的
build
文件夹的克隆仓库)复制到路径:

/home/pi/Desktop/proj/venv/lib/python3.7/site-packages/pvrecorder/lib/linux/i686
(我手动创建了文件夹
i686
)。

这意味着,您还需要通过

pip
在您的环境中安装模块。

© www.soinside.com 2019 - 2024. All rights reserved.