#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
Также было высказано предположение, что вы можете создавать без этого компонента, используя
-Динтроспекция=отключена