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环境是同一个。

 

 

 

==============================================

 

posted on   Angry_Panda  阅读(273)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2022-09-27 985高校的大连理工大学——超学制的延期博士生、硕士生的国家医保缴费方法
2022-09-27 【重大喜讯!!!】凡是在中国知网上可查询到信息的(已收录)硕士、博士论文均可领取稿酬
2020-09-27 【转载】 取消idea双击shift时出现的全局搜索 (使用pycharm IDE时出现的问题)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示