'no module named setuptools' 但它包含在 DEPENDS 变量中
'no module named setuptools' but it is contained in the DEPENDS variable
此问题涉及 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"
使 python3 模块 'setuptools' 可用于 do_compile()
中的 python3 脚本?我怎样才能做到这一点?
在后台需要做更多的工作才能获得有效的设置工具支持。幸运的是有一个 class 来处理这个问题:
inherit setuptools3
这应该是将基于 setuptools 的项目与 OE-Core 打包所需的全部内容。只要您的项目具有标准 setup.py,您就不需要编写任何 do_compile() 或 do_install() 函数。
如果您确实需要查看详细信息,meta/classes/setuptools3.bbclass
和 meta/classes/distutils3.bbclass
应该包含您需要的内容(包括从食谱中调用本机 python 的相当不明显的方法)。
此问题涉及 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"
使 python3 模块 'setuptools' 可用于 do_compile()
中的 python3 脚本?我怎样才能做到这一点?
在后台需要做更多的工作才能获得有效的设置工具支持。幸运的是有一个 class 来处理这个问题:
inherit setuptools3
这应该是将基于 setuptools 的项目与 OE-Core 打包所需的全部内容。只要您的项目具有标准 setup.py,您就不需要编写任何 do_compile() 或 do_install() 函数。
如果您确实需要查看详细信息,meta/classes/setuptools3.bbclass
和 meta/classes/distutils3.bbclass
应该包含您需要的内容(包括从食谱中调用本机 python 的相当不明显的方法)。