4

有没有什么好的方法可以从 clojure 调用 python 作为使用 scipy、numpy、scikit-learn 等进行数据科学的一种方法?

我知道在 python 而不是 java 上运行的 clojure 实现,但这对我不起作用,因为我还需要在我的项目中调用 java 库。我也知道 Jython,但我不知道将它与 Clojure 一起使用的干净方法。

我想在我的项目中使用 Clojure,因为我更喜欢它作为一种语言,但我不能否认 Python 拥有一个令人难以置信的社区,以及一些最漂亮、设计良好的库。

4

3 回答 3

5

您可以使用Hy,而不是试图让 Jython 与 Clojure 和 numpy/scipy 一起玩得很好。它托管在 Python 上,有点类似于 Clojure。

如果我真的想使用 numpy/scipy,我会用 Python(或 Hy)编写后端,将其作为单独的服务运行。如果我真的很喜欢 ring,或者不能没有 Instaparse,我会在 Clojure 中编写一个前端。

顺便说一句,Python 有EDN库。将其中一个集成到 Hy 中或从头开始编写一个将是一个有趣的项目。

于 2016-02-08T19:52:41.110 回答
0

试试这个toolz库,它是一个用于 Python 的功能性标准库,旨在普遍遵循 Clojure 标准库的 API

除此之外,我鼓励您找到计算之间的接缝,并以 Unix 方式在 Clojure 或 Python 中编写单独的工具,具体取决于哪个似乎最适合该用例。在工具之间序列化数据,或者通过管道作为文本/JSON,或者使用像 Protobuf 这样的二进制序列化格式,它具有 Java 和 Python 的标准 API。

如果你拿枪指着我,告诉我构建 Clojure/Python 互操作,我会开始py4j并通过 Java 接口连接这两种语言,使用implementsPython 类和reifyClojure 端的成员。

于 2016-02-09T04:28:35.670 回答
0

你现在可以使用 Graal VM。尽管一些大公司正在生产中使用它,但仍处于早期阶段。下面是从 Clojure 使用 Python 的示例:

(.eval context "python" "
import time;
time.clock()
")

http://gigasquidsoftware.com/blog/2017/10/22/embedded-interop-between-clojure-r-and-python-with-graalvm/

于 2018-07-20T15:48:52.833 回答