Yocto:为 SciKit-learn 创建配方

Var*_*yag 5 linux numpy python-3.x scikit-learn yocto

我正在尝试为SciKit-Learnfrom pypi创建一个配方。但似乎python3 setup.py build无法找到NumPy,即使我知道我在构建主机上有它(包括pip3 install numpybitbake python3-numpy-native)。

现在我的食谱中有以下内容:

DESCRIPTION = "python3-scikit-learn"
SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://PKG-INFO;md5=4a2bb4f4ec2b68ec46d5d1be3371b2c7"

PR = "r0"
SRCNAME = "scikit-learn"

SRC_URI="https://files.pythonhosted.org/packages/1e/ce/9d8c88e68af0a5b5c5d78d8d2b7bcadfd45e1d6afc863ccb9aee30765b06/scikit-learn-0.21.3.tar.gz"

SRC_URI[md5sum] = "d7bb030fea8d503d897a0dc8c50b9241"

SRC_URI[sha256sum] = "eb9b8ebf59eddd8b96366428238ab27d05a19e89c5516ce294abc35cea75d003"

S = "${WORKDIR}/${SRCNAME}-${PV}"

inherit setuptools3
Run Code Online (Sandbox Code Playgroud)

这种方法适用于其他还没有 openembedded 的 python 包,就像joblib我用这种确切的方法安装的一样。

我可以看到当我在bitbake python3-scikit-learn -c devshell那里运行并运行 python3 时,我无法导入 numpy,因为它从 devshell python3 正在查找的路径中丢失(在 中/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/

我已经尝试将构建主机 numpy 包文件夹手动复制粘贴到此目录,但随后出现此错误:

Log data follows:
| DEBUG: Executing shell function do_compile
| C compiler: aarch64-poky-linux-gcc -march=armv8-a+crc -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot -Wno-unused-result -Wsign-compare -DNDEBUG -g -O3 -Wall -O2 -pipe -g -feliminate-unused-debug-types -O2 -pipe -g -feliminate-unused-debug-types -O2 -pipe -g -feliminate-unused-debug-types -fPIC
| 
| compile options: '-c'
| extra options: '-fopenmp'
| aarch64-poky-linux-gcc: test_openmp.c
| aarch64-poky-linux-gcc -march=armv8-a+crc -fstack-protector-strong -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fstack-protector-strong -Wl,-z,relro,-z,now objects/test_openmp.o -o test_openmp -fopenmp
| Partial import of sklearn during the build process.
| /home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: 'project_urls'
|   warnings.warn(msg)
| /home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: 'python_requires'
|   warnings.warn(msg)
| /home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: 'install_requires'
|   warnings.warn(msg)
| Traceback (most recent call last):
|   File "setup.py", line 291, in <module>
|     setup_package()
|   File "setup.py", line 287, in setup_package
|     setup(**metadata)
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/numpy/distutils/core.py", line 137, in setup
|     config = configuration()
|   File "setup.py", line 174, in configuration
|     config.add_subpackage('sklearn')
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/numpy/distutils/misc_util.py", line 1035, in add_subpackage
|     caller_level = 2)
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/numpy/distutils/misc_util.py", line 1004, in get_subpackage
|     caller_level = caller_level + 1)
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/numpy/distutils/misc_util.py", line 941, in _get_configuration_from_setup_py
|     config = setup_module.configuration(*args)
|   File "sklearn/setup.py", line 76, in configuration
|     maybe_cythonize_extensions(top_path, config)
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/scikit-learn-0.21.3/sklearn/_build_utils/__init__.py", line 42, in maybe_cythonize_extensions
|     with_openmp = check_openmp_support()
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/scikit-learn-0.21.3/sklearn/_build_utils/openmp_helpers.py", line 100, in check_openmp_support
|     output = subprocess.check_output('./test_openmp')
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/subprocess.py", line 395, in check_output
|     **kwargs).stdout
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/subprocess.py", line 472, in run
|     with Popen(*popenargs, **kwargs) as process:
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/subprocess.py", line 775, in __init__
|     restore_signals, start_new_session)
|   File "/home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/recipe-sysroot-native/usr/lib/python3.7/subprocess.py", line 1522, in _execute_child
|     raise child_exception_type(errno_num, err_msg, err_filename)
| OSError: [Errno 8] Exec format error: './test_openmp'
| ERROR: 'python3 setup.py build ' execution failed.
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /home/yoctouser/build/tmp/work/aarch64-poky-linux/python3-scikit-learn/0.21.3-r0/temp/log.do_compile.605)
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何解决这个问题?