mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量
代码:
from python import Python fn f() raises:
# This is equivalent to Python's `import numpy as np`
let np = Python.import_module("numpy")
let a = np.array([1, 2, 3])
print(a) fn main() raises:
f()
mojo编译后执行,报错:
Mojo/Python interoperability error: Unable to locate a suitable libpython, please set `MOJO_PYTHON_LIBRARY`

==============================================
参考:
https://github.com/modularml/mojo/issues/551
执行命令(查找当前python环境下的libpython位置):
python3 -c 'import sysconfig; print(sysconfig.get_config_var("LIBDIR"))'
ls $(python3 -c 'import sysconfig; print(sysconfig.get_config_var("LIBDIR"))') | grep libpython

解决方法:
echo 'export MOJO_PYTHON_LIBRARY="<full_path_to_libpython.so>"' >> ~/.bashrc source ~/.bashrc
因此在当前环境配置命令为:
export MOJO_PYTHON_LIBRARY=/home/devil/anaconda3/envs/mojo/lib/libpython3.so
也或者将命令写入 .bashrc 配置文件中:
配置后执行:

/home/devil/anaconda3/lib/python3.9/site-packages/numpy/__init__.py:143: UserWarning: mkl-service package failed to import, therefore Intel(R) MKL initialization ensuring its correct out-of-the box operation under condition when Gnu OpenMP had already been loaded by Python process is not assured. Please install mkl-service package, see http://github.com/IntelPython/mkl-service
from . import _distributor_init
Unhandled exception caught during execution: An error occurred in Python.
考虑到之前配置使当前的python环境失效,重新设置python解释器环境:
conda activate mojo
再次执行,成功:

==============================================
PS:
说明下上面配置的原理,mojo二进制执行程序调用python库其实可以分为编译和执行两个阶段,编译的时候指定libpython3.so的位置就是指定编译后的程序需要调用的lib库是哪个,执行的时候会在当前的lib库搜索路径下进行搜索,因此就需要保证编译时指定的libpython3.so文件和执行时候的搜索的当前python环境是同一个。
==============================================
mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量的更多相关文章
- android无后缀二进制执行文件替代apk实现程序功能
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha android无后缀二进制执行文件替代apk实现程序功能 实现将data/Android ...
- robotframework执行用例时,报错selenium.common.exceptions.WebDriverException: Message: unknown error: cannot get automation extension from unknown error: page could not be found: chrome-extension://aapnijgdinl
在用robotframework编写移动端测试用例(用chrome浏览器模拟手机浏览器),执行用例时, 报错selenium.common.exceptions.WebDriverException: ...
- Ceph 存储集群 - 搭建存储集群---教程走到osd激活这一步执行不下去了,报错
目录 一.准备机器 [1. 修改主机名](所有节点)(https://www.cnblogs.com/zengzhihua/p/9829472.html#1-修改主机名) [2. 修改hosts文件] ...
- CentOS 7(Linux)安装docker,执行yum install docker-io -y报错
CentOS 7(Linux)安装Docker,执行yum install docker-io -y报错 一.执行yum install docker-io -y报错 Error: docker-ce ...
- 备库搭建后,进入备库报错psql: FATAL: the database system is starting up
备库搭建后,进入备库报错psql: FATAL: the database system is starting up 原因:备库配置文件没有hot_standby = on mast ...
- rails执行sidekiq任务的时候报错“can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock'”
rails执行sidekiq任务的时候报错“can't connect to local mysql server through socket '/var/run/mysqld/mysqld.soc ...
- c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应
问题:c#执行插入sql 时,报错:异常信息:超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决: SqlCommand cmd = new SqlCommand(); cmd.Comman ...
- laravel中ubuntu下执行php artisan migrate总是报错
ubuntu14.0 + xampp + laravel5下 laravel中ubuntu下执行php artisan migrate总是报错: [PDOException] could not fi ...
- windows修改系统登录密码后,出现SQLserver服务无法启动,启动报错17051
windows修改系统登录密码后,出现SQLserver服务无法启动,启动报错17051具体报错如下: 根据错误提示,去到windows的事件查看器.在win10上,右击左下角的菜单图标:然后依次点击 ...
- vue项目更换目录后执行npm run dev 就报错(新手进)
在我们搭建好一个VUE项目的环境后,觉得这个项目存放的位置不好,想移动一下,但是移动后我们发现执行npm run dev就会报下面的错误: 明明只是移动了一下位置,就报错,实在是太恶心了. 但是只要我 ...
随机推荐
- 可观测性平台夜莺开源项目发布V6正式版!
夜莺开源项目在2023.7月底发布了V6版本,这个版本开始,项目目标不止于做一款开源监控系统,而是要做一款开源可观测性平台,不过路漫漫其修远兮,初期只是把日志数据源引入并完成了基本的可视化,后续会着力 ...
- rabbitMq消息没收到排查
rabbitMq消息没收到排查 首先看是否本地机器开了服务,或者测试环境里面其他的个人电脑本地服务启动注册了,都监听了同一个队列,导致队列消息被接走了.现象是在测试环境期望的执行没有运行.或者关注服务 ...
- SDL3 入门(3):三角形
SDL3 提供了 SDL_RenderGeometry 函数绘制几何图形,用法和 OpenGL 差不多,先定义顶点数据,然后根据顶点数据绘制几何图形. 绘制三角形的代码如下: std::array&l ...
- C#使用RegNotifyChangeKeyValue监听注册表更改的几种方式
养成一个好习惯,调用 Windows API 之前一定要先看文档 RegNotifyChangeKeyValue 函数 (winreg.h) - Win32 apps | Microsoft Lear ...
- RTThread 自动网卡使用问题
最近使用 STM32 测试了一下 lwip 和 esp8266 的网络连接问题,使用 RTThread 的自动网卡时,发现不能很好的自动切换默认网卡,不能满足需求,所以自己简单的改了一下. 一.准备材 ...
- Gmsh 和 FiPy 求解稳态圆柱绕流
本项目的源码保存在 github 仓库 https://github.com/cjyyx/CFD_Learning/tree/main/CFD软件学习/FiPy/cylinder.如果下载整个目录,可 ...
- BigCodeBench: 继 HumanEval 之后的新一代代码生成测试基准
HumanEval 是一个用于评估大型语言模型 (LLM) 在代码生成任务中的参考基准,因为它使得对紧凑的函数级代码片段的评估变得容易.然而,关于其在评估 LLM 编程能力方面的有效性越来越多的担忧, ...
- 动手学Avalonia:基于SemanticKernel与硅基流动构建AI聊天与翻译工具
Avalonia是什么? Avalonia是一个跨平台的UI框架,专为.NET开发打造,提供灵活的样式系统,支持Windows.macOS.Linux.iOS.Android及WebAssembly等 ...
- vulnhub - w1r3s.v1.0.1
vulnhub - w1r3s.v1.0.1 高质量视频教程 - b站红队笔记 靶机下载 本地环境 本机ip:192.168.157.131 w1r3s虚拟机设置NAT模式 信息收集 扫描网段得到攻击 ...
- 怎样理解 Vue 的单向数据流?
数据从父级组件传递给子组件,只能单向绑定. 子组件内部不能直接修改从父级传递过来的数据. 所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件 ...