libpython-clj 使用教程
libpython-clj Python bindings for Clojure 项目地址: https://gitcode.com/gh_mirrors/li/libpython-clj
1. 项目介绍
libpython-clj
是一个用于 Clojure 的 Python 绑定库,旨在实现 Clojure 和 Python 之间的深度集成。通过这个库,开发者可以在 Clojure 中直接使用 Python 模块,就像使用 Clojure 命名空间一样。此外,它还支持在 Python 中嵌入 Clojure,实现双向的互操作。
主要特性
- JVM 和 Python 对象的桥接:轻松在 Java 中使用 Python,或在 Python 中使用 Java。
- 动态查找 Python 库:自动查找并加载系统中的 Python 库,支持多版本 Python。
- REPL 导向设计:支持快速、平滑的迭代开发。
- 静态代码生成:生成 Clojure 命名空间,支持 AOT 编译,加载速度更快。
2. 项目快速启动
安装
首先,确保你已经安装了 Clojure 和 Python。然后,在项目中添加 libpython-clj
依赖:
;; project.clj
(defproject my-project "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.10.3"]
[clj-python/libpython-clj "2.025"]])
初始化
在 Clojure 代码中初始化 libpython-clj
:
(ns my-py-clj.core
(:require [libpython-clj2.python :as py]))
(py/initialize! :python-executable "/path/to/python" :library-path "/path/to/libpython.so")
使用 Python 模块
导入并使用 Python 模块:
(require '[libpython-clj2.require :refer [require-python]])
(require-python '[numpy :as np])
(def test-ary (np/array [[1 2] [3 4]]))
(println test-ary) ;; 输出: [[1 2] [3 4]]
3. 应用案例和最佳实践
案例1:在 Clojure 中使用 NumPy
(require '[libpython-clj2.require :refer [require-python]])
(require-python '[numpy :as np])
(def matrix (np/array [[1 2] [3 4]]))
(def result (np/dot matrix matrix))
(println result) ;; 输出: [[ 7 10] [15 22]]
案例2:在 Python 中嵌入 Clojure
import jpy
# 初始化 Clojure
jpy.initialize()
# 加载 Clojure 命名空间
jpy.require('my-py-clj.core')
# 调用 Clojure 函数
result = jpy.eval('(my-py-clj.core/add 1 2)')
print(result) # 输出: 3
4. 典型生态项目
1. ClojureScript
- 结合
libpython-clj
和ClojureScript
,可以在前端使用 Python 库进行数据处理和科学计算。
2. SciCloj
- 一个专注于科学计算的 Clojure 社区,提供了许多与
libpython-clj
结合使用的工具和库。
3. Nextjournal
- 一个基于 Clojure 的笔记本环境,支持
libpython-clj
,可以在笔记本中直接使用 Python 库。
通过这些生态项目,libpython-clj
可以更好地融入到 Clojure 的开发环境中,提供更强大的功能和更广泛的应用场景。
libpython-clj Python bindings for Clojure 项目地址: https://gitcode.com/gh_mirrors/li/libpython-clj