此问题涉及Openembedded / Yocto。
我的源代码需要由自定义的python3脚本编译。
这意味着,某些python3脚本应该在do_compile()
进程中运行。
该脚本导入setuptools,因此,我在配方中添加了DEPENDS += "python3-setuptools-native"
。据我所知,这应该使setuptools模块可用于构建过程(本机)。
但是当bitbake执行do_compile()
进程时,我收到此错误:no module named 'setuptools'
。
让我把它分解为一个最小的(非)工作例子:
文件: test.bb
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://test/LICENSE;md5=d41d8cd98f00b204e9800998ecf8427e"
DEPENDS += "python3-setuptools-native"
SRC_URI = "file://test.py \
file://LICENSE"
do_compile() {
python3 ${S}/../test.py
}
文件: test.py
import setuptools
print("HELLO")
bitbaking:
$ bitbake test
ERROR: test-1.0-r0 do_compile: Function failed: do_compile (log file is located at /path/to/test/1.0-r0/temp/log.do_compile.8532)
ERROR: Logfile of failure stored in: /path/to/test/1.0-r0/temp/log.do_compile.8532
Log data follows:
| DEBUG: Executing shell function do_compile
| Traceback (most recent call last):
| File "/path/to/test-1.0/../test.py", line 1, in <module>
| import setuptools
| ImportError: No module named 'setuptools'
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_compile (log file is located at /path/to/test/1.0-r0/temp/log.do_compile.8532)
ERROR: Task (/path/to/test.bb:do_compile) failed with exit code '1'
NOTE: Tasks Summary: Attempted 400 tasks of which 398 didn't need to be rerun and 1 failed.
NOTE: Writing buildhistory
Summary: 1 task failed:
/path/to/test.bb:do_compile
Summary: There was 1 ERROR message shown, returning a non-zero exit code.
我的贬低是错误的,DEPENDS += "python3-setuptools-native"
使do_compile()
中的python3脚本可以使用python3模块'setuptools'吗?我怎么能做到这一点?
答案 0 :(得分:1)
需要更多工作才能获得工作安装工具支持。幸运的是,有一个类来处理:
inherit setuptools3
这应该是使用OE-Core打包基于setuptools的项目所需的全部内容。只要您的项目具有标准的setup.py,您就不需要编写任何do_compile()或do_install()函数。
如果您确实需要查看详细信息,meta/classes/setuptools3.bbclass
和meta/classes/distutils3.bbclass
应该包含您需要的内容(包括从配方中调用本机python的相当不明显的方法)。