Genie.jl中模块调用报错:如何在项目中定义自定义模块?
解决Genie.jl中本地模块调用报错的问题
针对你遇到的using NewModel报错问题,有几种实用的解决方式:
方法一:显式引入模块文件(快速临时方案)
在newcon.jl开头先引入模块文件,再调用本地模块(注意模块名前加.):
# 从控制器目录向上一级,再进入models目录引入文件 include("../models/newmod.jl") # 调用本地定义的模块,前面的点表示这是当前项目内的本地模块 using .NewModel
方法二:添加模块路径到Julia加载路径(适合多模块场景)
在项目的启动入口文件(比如app.jl或bootstrap.jl)中,把模型所在目录添加到Julia的LOAD_PATH,确保这段代码在加载控制器之前执行:
# 动态拼接模型目录的绝对路径 push!(LOAD_PATH, joinpath(@__DIR__, "resources", "models"))
之后在newcon.jl里就可以直接使用using NewModel调用模块。
方法三:将本地模块注册为项目子包(规范长期方案)
如果你的模块功能复杂,推荐用子包方式管理:
- 在
app/resources/models目录下创建Project.toml,填入以下内容(UUID可以用uuidgen命令生成,替换示例内容):
name = "NewModel" uuid = "xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" authors = ["你的名字 <你的邮箱>"] version = "0.1.0"
- 回到项目根目录,执行命令注册本地子包:
julia --project -e 'using Pkg; Pkg.develop(path="app/resources/models")'
- 此时主项目的
Project.toml会自动添加NewModel作为依赖,之后就能在newcon.jl里直接using NewModel。
内容的提问来源于stack exchange,提问作者weera
相关产品推荐
相关产品推荐

