0

我正在使用 Python 3.6.7 venv 并且我已经安装了PyBluez蓝牙库,以及它的所有依赖项,例如sudo apt install bluetooth libbluetooth-dev python3-bluez. 当我运行我的 python 脚本时,我得到:

`ModuleNotFoundError:没有名为“蓝牙”的模块

疯狂的部分是我刚刚检查了我的环境/lib/python3.6/site-packages/目录,确实有名为蓝牙和 PyBluez-0.22,egg-info 的目录。

即便如此,当我进入bluetooth目录时,确实有一个ble.py文件、一个_bluetooth.cpython.so文件(名称缩写)一个 bluez.py,其中都包含有效代码。所有依赖项都是通过pip3 install从虚拟环境中安装的,甚至验证了python3 -m pip installpython3 声称它们已经安装到的位置。此外,ls -la显示 drwxrwxr-x 就像site-packages文件夹中的所有其他依赖项一样。这里有什么问题?

注意:我还pip3 list从 venv 内部验证了安装。

注意 2:Visual Studio Code 似乎无法找到这些模块......它们用红色下划线和 pylint 扩展表示unable to import [modulename]。这仅适用于安装在 venv 中的模块。这可能只是 pylint 扩展搜索系统库而不是我的发泄库的错误......没什么大不了的。

4

1 回答 1

0

当您python3-bluez作为 apt 包安装时,它会安装在系统的全局站点包中。默认情况下,virtualenv 不会从全局站点包继承包,因此在 virtualenv 环境中,您实际上无法从全局站点包中导入任何模块。但这可以在创建带有--system-site-packages标志的 virtualenv 环境时或在创建后通过no-global-site-packages.txtlib/pythonX.X/目录中删除来启用从全局站点包继承。更多信息请关注官方文档

于 2018-12-27T05:34:33.203 回答