Невозможно установить `gattlib` - PullRequest
3 голосов
/ 10 февраля 2020

Я пытаюсь установить gattlib в Python, чтобы использовать некоторые из его Bluetooth-инструментов.

Операционная система - Ubuntu 18.04.4 LTS.

Я уже попробовал следующее (например, здесь ):

sudo apt-get install mercurial
hg clone https://bitbucket.org/OscarAcena/pygattlib
cd pygattlib
cat DEPENDS
sudo apt-get install libboost-thread-dev libboost-python-dev    libbluetooth-dev libglib2.0-dev python-dev
sudo python3 setup.py install

, что дает (мой Python равен 3,6,9):

usr/bin/ld: cannot find -lboost-python36
collect2: error: ld returned 1 exit status
error: command 'x86_64-linux-gnu-g++' failed with exit status 1

Кроме того, я попытался:

sudo apt install python3-gattlib

, что дает:

the following packages have unmet dependencies:
python3-gattlib: Depends: python3 (>= 3.7~) but 3.6.7-1~18.04 is to be installed
                 Depends: libboost-python1.67.0 but is is not installable
                 Depends: libboost-thread1.67.0 but is is not installable

несмотря на то, что libboost- python и libboost-thread были успешно установлены с первой попытки (см. Выше) и python3 возвращая Python 3.6.9.

pip3 install gattlib

показывает:

Building wheel for gattlib(setup.py) ... error

Running setup.py install for gattlib ... error

Это тот же самый результат, который я получаю от (следуя инструкциям из этого вопроса) :

sudo pip3 download gattlib  
sudo tar xvzf ./gattlib-0.20200122.tar.gz
cd gattlib-0.20200122/
sudo sed -ie 's/boost_python-py34/boost_python36/' setup.py
pip3 install .

, в которой, как я понимаю, необходима корректировка установочного файла перед его запуском, потому что, если я правильно понял, версия python там каким-то образом неправильно закодирована.

Другие вещи, которые я пробовал, и это не помогло:

pip3 install --upgrade setuptools
sudo apt-get install python3.6-dev libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
sudo apt-get install python-dev
sudo apt-get install libpython-dev
sudo apt-get install libevent-dev
sudo pip3 install gattlib
wget -qO- http://pike.esi.uclm.es/add-pike-repo.sh | sudo sh
sudo apt update
sudo apt install python3-gattlib
sudo apt-get install libbluetooth-dev
pip3 install --upgrade pip
sudo apt-get install mercurial
pip3 install gattlib
sudo apt-get install libboost-all-dev

cd /usr/lib/x86-64-linux-gnu
sudo ln -s libboost_python-py35.so libboost_python-py36.so

sudo apt-get install libbluetooth-dev bluez bluez-hcidump libboost-python-dev libboost-thread-dev libglib2.0-dev

hg clone https://bitbucket.org/OscarAcena/pygattlib
cd pygattlib
cat DEPENDS
sudo apt-get install libboost-thread-dev libboost-python-dev    libbluetooth-dev libglib2.0-dev python-dev
sudo python3 setup.py install
sudo python setup.py install

pip3 install gTTS

sudo apt-get install python3 python-dev python3-dev \
build-essential libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev \
python-pip
sudo apt-get install aptitude
sudo aptitude install libboost-all-dev

Ответы [ 2 ]

2 голосов
/ 10 февраля 2020

Я запускаю

sudo python3 setup.py install

, и я также получаю ошибку

usr/bin/ld: cannot find -lboost-python36

, потому что у меня нет boost-python36.a, но boost-python3-py36.a.

(я нашел этот файл, используя locate boost-python3, в котором используется база данных с именами файлов, поэтому он работает быстрее, чем find, но он не может быть установлен по умолчанию)

Мне пришлось редактировать setup.py и измените

boost_libs = ["boost_python3"+str(sys.version_info.minor)]

на

boost_libs = ["boost_python3-py36"]

или более универсальный

boost_libs = ["boost_python3-py3"+str(sys.version_info.minor)]

Протестировано od Linux Mint 19.3 Tricia на основе Ubuntu 18.04

0 голосов
/ 10 февраля 2020

Вам необходимо установить python-dev, который содержит файлы заголовков для Python C API. Следующие действия должны помочь (обязательно замените X вашей Python версией):

sudo apt-get install python3.X-dev
...