如何在基于Toree插件的Jupyter Notebook中导入本地Scala文件?
解决Toree Notebook中导入本地Scala文件的编译错误
我之前在Toree环境下写Jupyter Scala代码时,也踩过这个导入本地文件的坑!结合你的报错信息,给你几个靠谱的解决办法:
首先检查基础问题
先确认两个容易忽略的关键点:
- 你的本地文件
TweetData.scala里定义的是不是object TweetReader?如果文件里的对象是TweetData,那你应该写import TweetData._而不是import TweetReader._——这是新手常犯的文件名和对象名不匹配问题,也是你当前报错的大概率原因。 - 用
!pwd命令确认Notebook的当前工作目录和TweetData.scala所在的目录一致,如果不在同一个目录,要写完整路径(比如./src/TweetData.scala)。
方法一:用Toree魔法命令直接加载本地文件
Toree支持%load魔法命令,能把本地Scala文件的内容加载到当前cell并执行,这样后续就能直接导入对应的对象:
%load ./TweetData.scala
执行这个cell之后,再运行正确的导入语句(比如import TweetData._)就不会报错了。这个方法最简单,适合快速测试单个本地文件。
方法二:将当前目录添加到Classpath并编译
如果你的本地文件有依赖关系,或者不想把文件内容直接加载到Notebook里,可以用这种方式:
- 先把当前工作目录添加到Toree的classpath:
%classpath add file ./
- 用Scala编译器编译本地文件:
!scalac TweetData.scala
- 之后再执行导入语句:
import TweetData._
这样就能正常导入编译好的类/对象了。
额外提示
如果你的本地文件是一个类库或者有多个依赖文件,建议把它们打包成jar包,然后用%AddJar魔法命令导入jar包,这样管理起来更方便:
%AddJar file:///path/to/your/jar/file.jar
内容的提问来源于stack exchange,提问作者Ébe Isaac
相关产品推荐
相关产品推荐

