Ошибка с общими библиотеками под управлением Salome-Meca

Я создал скрипт python, который сбросит конкретное USB-устройство на основе номера устройства. Вы можете узнать номер устройства из команды lsusb.

, например:

$ lsusb Bus 002 Device 004: ID 046d:c312 Logitech, Inc. DeLuxe 250 Keyboard

В этой строке 004 указан номер устройства

import os import argparse import subprocess path='/sys/bus/usb/devices/' def runbash(cmd): p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) out = p.stdout.read().strip() return out def reset_device(dev_num): sub_dirs = [] for root, dirs, files in os.walk(path): for name in dirs: sub_dirs.append(os.path.join(root, name)) dev_found = 0 for sub_dir in sub_dirs: if True == os.path.isfile(sub_dir+'/devnum'): fd = open(sub_dir+'/devnum','r') line = fd.readline() if int(dev_num) == int(line): print ('Your device is at: '+sub_dir) dev_found = 1 break fd.close() if dev_found == 1: reset_file = sub_dir+'/authorized' runbash('echo 0 > '+reset_file) runbash('echo 1 > '+reset_file) print ('Device reset successful') else: print ("No such device") def main(): parser = argparse.ArgumentParser() parser.add_argument('-d', '--devnum', dest='devnum') args = parser.parse_args() if args.devnum is None: print('Usage:usb_reset.py -d <device_number> \nThe device number can be obtained from lsusb command result') return reset_device(args.devnum) if __name__=='__main__': main()
2
задан 13 November 2019 в 06:12

1 ответ

начальная ошибка произошла, потому что libQt5Help.so.5 не был найден. libqt5help5 пакет обеспечивает этот файл . Я надеялся, устанавливая, что пакет может быть достаточным для решения проблемы, и для некоторых читателей этого сообщения, это могло бы:

sudo apt install libqt5help5

Однако иногда определенный пакет, который Вы ищете, является одним из многих пакетов, в которых Вы нуждаетесь, и часто устанавливается как зависимость чего-то, что обеспечивает более общую функциональность. Выполнение apt rdepends package иногда помогает в понимании этого. Вывод apt rdepends libqt5help5 шоу python-pyqt5 и python3-pyqt5. Так как сообщения об ошибках, которые Вы получаете, из Python, и это программное обеспечение, кажется, с 2019, я продолжил бы двигаться путем установки python3-pyqt5 вместо этого:

sudo apt install python3-pyqt5

я ошибался в своей предыдущей вере, что Salome-Meca использовала Python 2. Мои извинения!

я не нашел определенный совет в документации для Salome-Meca. Таким образом, это - разумное место для запуска. В моей системе я смог преодолеть сообщения об ошибках о недостающем использовании библиотек:

sudo apt install qtcreator net-tools libqt5opengl5 libnlopt0

Установка qtcreator является подходом раковины к получению библиотек Qt. Это устанавливает путь больше, чем, вероятно, будет необходимо - приблизительно гигабайт в моей системе - и если я найду лучший способ установить то, что необходимо, то я попытаюсь обновить это с той информацией.

После того, как я сделал это, это все еще не запустится. Я добрался ошибки как показанные здесь формы:

SALOME_Session_Server: /home/ek/salome_meca/V2019_univ/prerequisites/debianForSalome/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib/x86_64-linux-gnu/libGLU.so.1)
SALOME_Session_Server: /home/ek/salome_meca/V2019_univ/prerequisites/debianForSalome/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib/x86_64-linux-gnu/libQt5Xml.so.5)
SALOME_Session_Server: /home/ek/salome_meca/V2019_univ/prerequisites/debianForSalome/lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib/x86_64-linux-gnu/libQt5OpenGL.so.5)

... и так далее.

я смог решить (или, в любом случае, работа вокруг), что проблема, заставляя Salome-Meca использовать мою обеспеченную системой версию [1 113], а не версию она поставлется. Я сделал это с [1 114]:

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./salome

, Когда я выполняю Salome Meca тот путь, он запускается успешно:

screenshot of the Salome-Meca graphical interface

я подозреваю, что Ваши ошибки о не наличии корректных версий библиотеки, доступных , могут быть разрешимыми путем установки qtcreator, использования LD_PRELOAD для определения Вашего libstdc++.so.6, или оба. (Я не действительно уверен вполне, что те ошибки сказали, тем не менее, и я рекомендую обновить вопрос с ними, работает ли это.)

Примечание, которое, если Вы используете LD_PRELOAD, но Вы не выполняете ПК или Mac с 64-разрядным процессором Intel или AMD, затем путь, который Вы пишете после =, будет отличаться от моего. Например, при использовании 32-разрядной системы или системы ARM (любого размера слова), затем архитектура не является amd64. Можно искать libstdc++.so.6 для нахождения соответствующего пути.

0
ответ дан 2 December 2019 в 05:49

Другие вопросы по тегам:

Похожие вопросы: