GStreamer сборка windows не может импортировать _giscanner

#python-3.x #gstreamer

Вопрос:

Я пытаюсь создать GStreamer в Windows с помощью gst-сборки. Мое окружение:

  • Visual studio 2019 Professional
  • 64-разрядный Python 3.9
  • Мезон 0,58.999
  • Ниндзя 1.10.2

сообщение об ошибке:

 >ninja -C build
ninja: Entering directory `build'
[1/30] Generating gir-glib with a custom command (wrapped by meson to set PATH)
FAILED: subprojects/gobject-introspection/gir/GLib-2.0.gir
[long list of python subprocess args with include patsh, c files etc]
Traceback (most recent call last):
  File "C:WorkGStreamer-buildsourcegst-buildbuildsubprojectsgobject-introspectiontoolsg-ir-scanner", line 98, in <module>
    from giscanner.scannermain import scanner_main
  File "C:WorkGStreamer-buildsourcegst-buildbuildsubprojectsgobject-introspectiongiscannerscannermain.py", line 35, in <module>
    from giscanner.ast import Include, Namespace
  File "C:WorkGStreamer-buildsourcegst-buildbuildsubprojectsgobject-introspectiongiscannerast.py", line 29, in <module>
    from .sourcescanner import CTYPE_TYPEDEF, CSYMBOL_TYPE_TYPEDEF
  File "C:WorkGStreamer-buildsourcegst-buildbuildsubprojectsgobject-introspectiongiscannersourcescanner.py", line 35, in <module>
    from giscanner._giscanner import SourceScanner as CSourceScanner
ImportError: DLL load failed while importing _giscanner: The specified module could not be found.

ninja: build stopped: subcommand failed.
 

если я проверю каталог сборки:
введите описание изображения здесь
Таким образом, файл действительно создается, но по какой-то причине не может быть импортирован.

Отсюда я видел, что в python 3.8 произошли некоторые изменения в способе поиска библиотек DLL, но даже если я вручную открою приглашение python в родительском каталоге и добавлю как родительский, так и каталоги giscanner в sys.path и с помощью os.add_dll_directory , я все равно не смогу импортировать модуль:

 >>> import os,sys
>>> a = os.add_dll_directory(os.getcwd())
>>> a
<AddedDllDirectory('C:\Work\GStreamer-build\source\gst-build\build\subprojects\gobject-introspection')>
>>> b = os.add_dll_directory(os.path.join(os.getcwd(),'giscanner'))
>>> b
<AddedDllDirectory('C:\Work\GStreamer-build\source\gst-build\build\subprojects\gobject-introspection\giscanner')>
>>> sys.path.insert(0, os.getcwd())
>>> sys.path.insert(0, os.path.join(os.getcwd(),'giscanner'))
 

дальнейшие раскопки показывают, что pkg-config, похоже, не знает, где найти gio, однако он также был успешно построен как часть сборки, поэтому не уверен, почему он не знает.

Ответ №1:

Не уверен в реальной проблеме, но обходной путь состоит в том, чтобы вернуть Python к версии 3.7.9 (64 бит).

https://www.python.org/downloads/release/python-379

Также было высказано предположение, что вы можете создавать без этого компонента, используя

-Динтроспекция=отключена