0

设置:

  1. Windows 10 上的 Emacs 25.2.1
  2. Pymacs 0.25
  3. 蟒蛇 Python 3.5.1

Pymacs 运行良好。我可以从 Emacs 成功运行 pymacs-eval 和 pymacs-exec 命令。例如,评估以下作品:

(require 'pymacs)    
(pymacs-exec "from scipy.stats import norm;")
(pymacs-exec "import numpy as np;")
(pymacs-exec "np.set_printoptions(threshold=np.nan);")
(pymacs-eval "norm.ppf(0.95)")

最后一行返回

1.6448536269514722

我遇到的问题是一些标准的 Python 3.x 语句正在向 Emacs 返回一些奇怪的东西。特别是,如果我运行

(pymacs-eval "import numpy as np;")
(pymacs-eval "np.max(np.array([[1,1],[2,4]]))")

我回来

(pymacs-python . 1479)

如果你跑

(pymacs-load "numpy" "np-")
(np-max (np-array '((1 1) (2 4))))

最后一行返回

(pymacs-python . 1479)

每当我尝试通过 Pymacs 将任何类型的列表从 Emacs Lisp 传递到 Python 时,这似乎都会发生。有人知道这些“(pymacs-python .n)” cons 单元格是什么意思吗?

4

1 回答 1

0

找到答案花了相当多的工作。当 Pymacs 不了解特定 Python 函数产生的结构时,就会出现问题。对于 Numpy,Pymacs 不知道如何解析 Numpy 数组。诀窍是将 numpy 数组转换为标准的 Python 列表。

这是一个例子:

(require 'pymacs)
(pymacs-exec "import numpy as np")
(pymacs-eval "np.ndarray.tolist(np.asarray([[1,2],[3,4]]))")

这将产生

'((1 2) (3 4))

真挚地,

巴勃罗

于 2017-08-13T22:40:34.457 回答