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

Julia中Pkg.develop无法识别本地包代码修改的问题

问题描述

我有一段名为main.jl的脚本,内容如下:

using Pkg
Pkg.develop(path="path/to/MyPackage/")
import MyPackage as mp

mp.test()

在本地包MyPackage的src/test.jl文件中,定义了如下函数:

function test()
  println("test 1")
end

首次运行main.jl时会输出"test 1",但保持REPL打开状态修改test()函数使其输出"test 2"后,再次运行脚本仍输出"test 1",请问哪里操作有误?

原因与解决方法

原因

Julia的REPL会话中,包一旦被加载就会常驻内存,默认不会自动检测并重新加载包内代码的修改。你首次运行脚本后,MyPackage已经被加载到当前会话,后续修改代码后,再次执行脚本调用的还是内存中旧版本的函数。

解决方法

方法一:使用Revise包实现热重载(推荐)

Revise是Julia生态中专门用于自动重载修改代码的工具,步骤如下:

  1. 打开REPL,进入包管理模式(按]键),执行add Revise完成安装
  2. 修改你的main.jl,在开头添加using Revise:
using Revise
using Pkg
Pkg.develop(path="path/to/MyPackage/")
import MyPackage as mp

mp.test()

或者在REPL会话启动时先执行using Revise,再运行脚本。之后修改MyPackage内的代码,无需重启REPL或手动重载,再次运行脚本就能调用更新后的函数。

方法二:手动重载包

如果不想使用Revise,修改代码后可以在REPL中手动触发包重载:

using Pkg
Pkg.reload("MyPackage")

重载完成后再运行main.jl,就能输出修改后的内容。

另外注意:Pkg.develop只需要执行一次,后续运行脚本时可以去掉这一行,避免重复执行不必要的操作。

内容的提问来源于stack exchange,提问作者Shep Bryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:25:20