首页 > 编程语言 >mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量

mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量

时间:2023-11-15 14:07:01浏览次数:50  
标签:Python 编译 PYTHON sysconfig python 报错 import mojo

代码:

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`

 

mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置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

 

mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量_搜索_02

 

 

 

解决方法:

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 配置文件中:

 

 

配置后执行:

mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量_搜索_03

 

/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

 

再次执行,成功:

mojo编程语言:编译后的mojo二进制执行文件调用python库报错——设置MOJO_PYTHON_LIBRARY变量_Python_04

 

 

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

 

 

PS:

说明下上面配置的原理,mojo二进制执行程序调用python库其实可以分为编译和执行两个阶段,编译的时候指定libpython3.so的位置就是指定编译后的程序需要调用的lib库是哪个,执行的时候会在当前的lib库搜索路径下进行搜索,因此就需要保证编译时指定的libpython3.so文件和执行时候的搜索的当前python环境是同一个。

 

 

 

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

 

标签:Python,编译,PYTHON,sysconfig,python,报错,import,mojo
From: https://blog.51cto.com/u_15642578/8390002

相关文章

  • mojo编程语言:mojo调用python库及内置函数builtins
    编程语言mojo调用python十分方便,mojo不仅可以调用python的库函数更可以调用python的内置函数(builtins),给出示例代码:frompythonimportPythonfnmain()raises:Python.add_to_path(".")letmypython=Python.import_module("xyz")letx=mypython.hello()......
  • 编程语言mojo报错:error: cannot call function that may raise in a context that can
    代码:frompythonimportPythonfnmain():#fnmain()raises:#ThisisequivalenttoPython's`importnumpyasnp`letnp=Python.import_module("numpy")leta=np.array([1,2,3])print(a) 运行报错:[02:19:48](mojo)devil@OME......
  • 苹果系统Mac升级后之前的网络软件不可用——Mac系统维护——Mac系统升级后软件报错—
      ========================================== 博士同学最近联系我,说是自己的mac系统升级后之前可以用的网络软件不可用使用了,由于平时工作需要,这个网络软件如果没有是十分不方便的,为此找我急需给出解决方案。作为一个资深穷人虽然使用Linux系统有了10十多年的时间,但是对于mac......
  • 执行git clone命令报错 ssl certificate problem:unable to get local issue certific
    1、背景说明 使用gitclone命令,拉取远程的https的git仓库时,报错:unabletoaccess"https://xxxx.com/n_patch_test.git/":sslcertificateproblem:unabletogetlocalissuecertificate 2、问题分析及解决 2.1分析通过上面的报错信息,可以分析到,是git的证书的问......
  • 【Python_Django】Django_高级的Python Web框架的基本使用
    Django是一个高级的PythonWeb框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发准备环境win64系统python3.9Django4.2.6pycharm2021.2.1 创建Django项目1、新......
  • 解决Python requests库不支持发送可迭代对象的问题
    在加班的路上,bug是那永远的陪伴。对于程序员来说,bug就像黑暗中的萤火虫,虽然微弱却永远指引着前进的方向。今天,我们要探讨的是Pythonrequests库在处理可迭代对象时遇到的问题,这是一道让许多开发者头痛的难题。本文将详细介绍一种临时解决方案,希望能帮助大家解决问题,让编程之路更加......
  • 盘点一个使用Python自动化处理GPS、北斗经纬度数据实战(下篇)
    大家好,我是皮皮。一、前言上一篇文章我们使用了Python来实现数据的导入和分列处理,最终可以得到符合预期的结果,不过还可以继续深挖优化下,这一篇文章一起来看看吧。优化的背景如下图所示:二、实现过程这里【瑜亮老师】继续给了一个优化指导,如下图所示:并且给出的代码如下:withopen("./G......
  • 云计算-使用python发送日志易告警
    现状公司有使用日志易,对应用层监控,并实现了大屏告警。同时也能够查询到相关的日志记录相关的日志易查询语句如下:#总量logtype:NginxANDNginx.url:\/$SubMenuName$*ANDNOT`JS_CSS_JPG_FONT`|statscount()asTotalCount#错误数(大于500)logtype:NginxANDNginx.url:\/$Su......
  • Python+PlayWright+ Pytest + Allure 自动化学习路线
    前言对于自己写过文章的总结,并不代表最好的学习路线还未完结,努力更新中ing建议把每节的实战演练做一下 PlayWrightPlayWright-环境安装PlayWright-如何使用playwrighPlayWrigh-同步和异步运行PlayWright-深入异步PlayWright-元素定位PlayWright-文本输......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-28-处理日历时间控件-上篇
    1.简介我们在实际工作中,有可能遇到有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据,例如:我们预定火车票或者预定酒店,需要选择发车日期或者酒店的入住与退房时间。宏哥早在之前的12306选出发站就简单的提到过,只不过是一带而过,今天就展开详细介绍一下。网页上......