Yocto/Poky构建环境下Python3 multiprocessing模块缺失问题求助
multiprocessing模块缺失的问题 看起来你遇到的是Yocto构建嵌入式系统时典型的模块裁剪问题——虽说multiprocessing是Python3的内置模块,但Yocto为了做最小化镜像,默认可能没把这个模块(以及它依赖的底层组件)包含进Python3的安装包,而Python2.7的构建配置可能默认保留了这些模块,所以能正常运行。
下面是具体的解决步骤:
调整Yocto构建配置,确保Python3包含
multiprocessing模块
打开你的build/conf/local.conf文件,添加以下配置项,强制让构建系统包含Python3的进程相关模块:# 核心进程模块 IMAGE_INSTALL_append = " python3-core python3-multiprocessing" # 补充依赖的辅助模块(部分Yocto版本需要) IMAGE_INSTALL_append = " python3-threading python3-subprocess"注意:如果找不到
python3-multiprocessing包,试试替换成python3-concurrent——有些Yocto版本里,进程相关模块被归类在这个包下。确认虚拟环境的创建方式
确保你的Python3.5.2虚拟环境是基于Yocto构建出来的系统级Python3创建的,不要用外部Python源码生成的虚拟环境。直接在目标系统中执行:python3 -m venv my_bokeh_env source my_bokeh_env/bin/activate这样虚拟环境会继承系统级Python的所有已安装模块,避免环境不兼容的问题。
验证系统级Python3的模块完整性
重新构建镜像并部署到Zynq平台后,先在系统级Python3中测试:python3 -c "import multiprocessing; print('Module loaded successfully')"如果这一步报错,说明Yocto构建时确实没把模块加进去,需要检查
meta-python层中的Python3配方,确认是否有禁用multiprocessing的配置,或者手动添加对应的模块编译选项。适配Bokeh版本到Python3.5.2
Python3.5.2属于比较老旧的版本,新版本Bokeh可能不再支持它。建议安装适配的Bokeh版本,比如:pip install bokeh==1.4.0这个版本明确支持Python3.5,能避免因版本不兼容导致的间接模块调用错误。
内容的提问来源于stack exchange,提问作者L.D.

