Mojo开发疑问:无法声明不可变变量及导入Python代码报错求助
疑问:为何无法在Mojo中声明不可变变量?
Mojo里用let关键字就是用来声明不可变(只读)变量的,要是你觉得没法声明,大概率是代码写法有问题:
- 别给
let声明的变量二次赋值,这本身就违反不可变规则 - 别在需要可变的场景用
let,比如循环里的计数器、函数里要修改的变量,这些得用var
记住核心规则:let对应不可变,var对应可变,按这个写就不会错。
WSL Ubuntu环境下导入Python代码的两类错误解决
错误1:调用可能抛异常的函数没做异常处理
原代码:
from python import Python let np = Python.import_module("numpy")
错误提示说Python.import_module可能抛出异常,但当前上下文不允许未捕获的异常。解决办法很简单,把调用包在try块里,同时给函数加上raises标记:
from python import Python fn main() raises: let np = try Python.import_module("numpy") # 这里写用numpy的代码
Mojo是静态类型语言,必须显式处理可能抛异常的函数,raises告诉编译器这个函数可能出错,try用来捕获调用时的异常。
错误2:找不到simple_interop模块
跑官方示例时提示could not find module simple_interop,按这几步排查:
- 先确认
simple_interop.py和你的Mojo代码在同一个文件夹里 - 要是不在同一目录,就把模块所在路径加到Python的
sys.path里,代码这么改:
from python import Python fn main() raises: let sys = try Python.import_module("sys") try sys.path.append("/存放simple_interop.py的文件夹路径") let simple_interop = try Python.import_module("simple_interop") # 后续代码
- 检查WSL的Python环境和Mojo用的是不是同一个——Mojo默认用系统自带的Python,确保模块装在这个环境里,要么用
pip install,要么直接把py文件放当前目录就行。
内容的提问来源于stack exchange,提问作者mehul gautam
相关产品推荐
相关产品推荐

