You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:23:35