Scala:如何在repl中安装广泛的软件包系统?

DJG*_*DJG 15 scala packages read-eval-print-loop

在Python中,如果我安装了一个包pip install package_name,我可以通过键入打开一个Python repl python,只需按名称导入包,无论我目前在文件系统中的目录是什么.

像这样

$ python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> 
Run Code Online (Sandbox Code Playgroud)

并且requests导入了库,我可以在repl中使用它.

在Scala中,我知道如何在一个使用的项目中执行此操作sbt,但出于学习目的,我想以这样的方式安装包,以便我只需scala在命令行键入然后导入已安装的包,而不是与特定项目相关联.

$ scala
Welcome to Scala version 2.10.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_40).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import scalaz._
<console>:7: error: not found: value scalaz
       import scalaz._
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Sch*_*rdt 11

Scala与Python不同.为Scala 2.9.x编译的代码与2.10.x不兼容.因此,如果您使用不同的版本,全局定义可能会导致很多问题.

您可以使用SBT并添加到$ HOME/.sbt/plugins/build.sbt

libraryDependencies += "org.scalaz" %% "scalaz-core" % "7.0.4"
Run Code Online (Sandbox Code Playgroud)

要么

libraryDependencies += "org.scalaz" % "scalaz-core_2.10" % "7.0.4"
Run Code Online (Sandbox Code Playgroud)

然后转到/ tmp并使用SBT启动Scala REPL:

sbt console
Run Code Online (Sandbox Code Playgroud)

但从长远来看,这不是一个好主意.

最好的办法是安装SBT,创建一个build.sbt文件并将其放入其中:

libraryDependencies += "org.scalaz" % "scalaz-core_2.10" % "7.0.4"

scalaVersion := "2.10.2" 

initialCommands in console := "import scalaz._, Scalaz._"
Run Code Online (Sandbox Code Playgroud)

现在将控制台更改为build.sbt文件夹并运行

sbt console
Run Code Online (Sandbox Code Playgroud)

有了这个,您可以尝试使用REPL并已导入scalaz并在类路径中.此外,还可以轻松添加其他依赖项.SBT很酷,你不需要手动安装新的Scala版本,只需在build.sbt中声明它.

  • 我希望有一个更简单的解决方案。 (3认同)