Как настроить библиотеку pyhidapi для поиска hidapi.dll в папке проекта?

#python-3.x #ctypes #cx-freeze #hidapi

#python-3.x #ctypes #cx-замораживание #hidapi

Вопрос:

Я пытаюсь скомпилировать свое приложение с помощью cx_Freeze.

На компьютере разработчика (с Windows 10) программа работает хорошо. Но когда я пробую это на другом компьютере (с Windows 7), я получаю сообщение об ошибке. Странно, что когда я попробовал это на другом компьютере с Windows 10, ошибки не было.

Одна из библиотек — «pyhidapi» — поиск hidapi.dll в каких-то странных местах.

 C:Users***Downloadsbuild>main
Traceback (most recent call last):
  File "C:Python3libsite-packagescx_Freezeinitscripts__startup__.py", line
 14, in run
  File "C:Python3libsite-packagescx_FreezeinitscriptsConsole.py", line 26,
 in run
  File "main.py", line 14, in <module>
  File "main.py", line 8, in main
  File "C:ntt_flashcopier_sourceinterfaceqt_interface.py", line 39, in __init
__
  File "C:ntt_flashcopier_sourcentt_flash_copierntt_flash_copier.py", line 14
, in __init__
  File "C:ntt_flashcopier_sourcentt_flash_copierdevice_listdevice_list.py",
line 11, in __init__
  File "C:ntt_flashcopier_sourcentt_flash_copierdevice_listdevice_implemento
r_list.py", line 10, in __init__
  File "C:ntt_flashcopier_sourcentt_flash_copierdevice_listhid_device_finder
.py", line 8, in __init__
  File "C:Python3libsite-packagespyhidapipyhidapi.py", line 417, in hid_ini
t
  File "C:Python3libsite-packagespyhidapipyhidapi.py", line 162, in __load_
hidapi
RuntimeError: Could not find the hidapi shared library.
  

Есть мой setup.py файл:

 from cx_Freeze import setup, Executable

executables = [
    Executable('main.py',
               icon='icon.ico')
]

_excludes = []
_include_files = ["hidapi.dll", 'conf.xml']
_includes = []

build_exe_options = {'include_msvcr': True,
                     'include_files': _include_files,
                     'includes': _includes,
                     'excludes': _excludes,
                     'build_exe': 'build',
                     }

setup(name='main',
      version='0.1',
      description='NTT Flash Copier',
      options={"build_exe": build_exe_options},
      executables=executables,
      requires=['pyhidapi', 'psutil', 'PyQt5']
      )
  

Я ожидаю, что эта программа будет работать в Windows 7 и 10 без дополнительных установок чего-то вроде python и т.д. Просто говоря, переносимый.

РЕДАКТИРОВАТЬ 1: возможно, проблема в системе (Windows 7). Я обнаружил, что cx_Freeze не может выполнять мультиплатформенную компиляцию. Завтра я попытаюсь скомпилировать код в системе Windows 7.

РЕДАКТИРОВАНИЕ 2: сделано предыдущее. У меня все еще возникает та же проблема, и она не работает на другом компьютере с Windows 10.

РЕДАКТИРОВАТЬ 3: теперь я пытаюсь установить virtualenv для своего проекта. Я получил ту же ошибку. Я думаю, что должен быть другой способ установки pyhidapi.

РЕДАКТИРОВАНИЕ 4: попытался установить pyhidapi из исходного кода. Ошибка все еще существует. Сейчас я переписываю код для реализации библиотеки pywinusb. Нужно ли мне отвечать на этот вопрос или я оставлю его открытым, может быть, кто-нибудь ответит на него?

Комментарии:

1. Вы смотрели в пакете? Является hidapi.dll там? есть ли у нее какие-либо зависимости? Также как вы пришли к выводу, что » поиск hidapi.dll в каких-то странных местах «?

2. Я посмотрел, в пакете нет hidapi.dll , но я включаю его в каталог сборки. О зависимостях — я уже не знаю. В документах ничего не было, но они плохие. Я постараюсь это проверить, спасибо. «поиск hidapi.dll в некоторых странных местах»: Нет ни одного C:ntt_flashcopier_source на компьютере с Windows 7. Этот путь находится на исходном компьютере с Windows 10.