Python3 не найдет модуль, даже если он правильно установлен - PullRequest
0 голосов
/ 27 декабря 2018

Я использую Python 3.6.7 venv и установил библиотеку PyBluez bluetooth в дополнение ко ВСЕМ ее зависимостям, таким как sudo apt install bluetooth libbluetooth-dev python3-bluez.Когда я запускаю свой скрипт на python, я получаю:

`ModuleNotFoundError: нет модуля с именем 'bluetooth'

Сумасшедшая часть в том, что я только что проверил каталог /lib/python3.6/site-packages/ своей среды и действительно каталогов, озаглавленных bluetooth и PyBluez-0.22, egg-info.

даже до сих пор, когда я захожу в каталог bluetooth, там есть действительно файл ble.py, файл _bluetooth.cpython.so (сокращенное имя), и a bluez.py, все с допустимым кодом в них.Все зависимости были установлены через pip3 install из виртуальной среды и даже проверены с помощью python3 -m pip install, на который python3 заявил, что они уже установлены.Кроме того, ls -la показывает drwxrwxr-x, как и все другие зависимости в папке site-packages.В чем здесь проблема?

Примечание. Я также проверил установку с pip3 list изнутри venv.

Примечание 2. Кажется, что Visual Studio Code не может найти модули... Они подчеркнуты красным, а расширение пилона говорит unable to import [modulename].Это верно только для модулей, установленных в venv.Это может быть просто ошибкой, когда расширение pylint выполняет поиск системных библиотек, а не библиотек моего вентиляционного канала ... Ничего страшного.

1 Ответ

0 голосов
/ 27 декабря 2018

Когда вы установили python3-bluez как пакет apt, он устанавливается в глобальных пакетах сайта вашей системы.По умолчанию virtualenv не наследует пакеты от пакетов глобального сайта, поэтому в среде virtualenv вы не можете импортировать какой-либо модуль из пакетов глобального сайта.Но это можно включить для наследования от пакета глобального сайта при создании среды virtualenv с флагом --system-site-packages или после создания, удалив no-global-site-packages.txt из каталога lib/pythonX.X/.Для получения дополнительной информации, пожалуйста, следуйте официальной документации .

...