代码之家  ›  专栏  ›  技术社区  ›  user3768495

scala import breeze可以在sbt控制台中工作,但不能从脚本中工作

  •  0
  • user3768495  · 技术社区  · 7 年前

    我在关注这个 scala for data science its repo . 当我第一次做的时候 sbt console 并键入 import breeze.lianlg._ 命令,很好用。但如果我用一行开头的脚本 import breeze.linalg._

    编辑:这是build.sbt文件的外观:

    name := "S4DS"
    
    organization := "s4ds"
    
    version := "0.1.0-SNAPSHOT"
    
    scalaVersion := "2.11.7"
    
    libraryDependencies ++= Seq(
      "org.scalanlp" %% "breeze" % "0.11.2",
      "org.scalanlp" %% "breeze-natives" % "0.11.2",
      "org.slf4j" % "slf4j-simple" % "1.7.5"
    )
    

    这是我尝试类路径方法后的屏幕截图: enter image description here

    2 回复  |  直到 7 年前
        1
  •  2
  •   Luis Miguel Mejía Suárez    7 年前

    问题

    问题是,当您从SBT运行console时,您就在项目内部 空间 ,其中包括您的库。
    空间 ,库不存在。

    这里有几个选项:

    • 创建 ,而不是脚本。
    • 类路径 .
    • 使用 菊石

    Uber罐

    Uber JAR . 它也是最可移植的,因为现在你有了一个包含所有依赖项的jar,所以你可以在任何地方运行它——而且,因为它是一个jar,你甚至不需要Scala了,只需要一个 .
    如果你往这边走,检查一下 sbt-assembly . 然而,由于您可能有一个小脚本,这样做可能会对您的问题造成过度伤害—但是请记住,对于较大的项目,这是一个规范的解决方案。

    类路径

    这个 CLASSPATH ,因此您只需要更新此变量以包含丢失的库,您可以通过创建文件夹来实现这一点 将所有jar下载到该文件夹,然后在 .bashrc 文件,以确保每次打开shell时都更新env var。

    export CLASSPATH="/opt/jars/*:$CLASSPATH"
    

    因为SBT已经把jar下载到 .ivy2/cache/ 类路径 但要注意同一Jar的多个版本。

    Ammonite 就像一个拥有超能力的Scala RELP,它的一个主要优点是 import Jars from ivy ,这正是你需要的。阿尔索 scala scripts . 所以也许值得一试。

        2
  •  0
  •   maxmithun xinec    7 年前