Emacs utop错误:没有这样的包:sexplib.syntax-由'core.syntax';

Emacs utop错误:没有这样的包:sexplib.syntax-由'core.syntax';,emacs,ocaml,opam,utop,Emacs,Ocaml,Opam,Utop,我正试图按照真实世界的ocaml指令设置emacs ocaml环境,但当我启动utop时,出现了错误: No such package: sexplib.syntax - required by `core.syntax' 如果我从命令行运行:ocamlfind list | grep sexp,我会得到: ppx_sexp_conv (version: 113.24.00) ppx_sexp_conv.expander (version: 113.24.00) ppx_sexp_

我正试图按照真实世界的ocaml指令设置emacs ocaml环境,但当我启动utop时,出现了错误:

No such package: sexplib.syntax - required by `core.syntax'
如果我从命令行运行:
ocamlfind list | grep sexp
,我会得到:

ppx_sexp_conv       (version: 113.24.00)
ppx_sexp_conv.expander (version: 113.24.00)
ppx_sexp_conv.expander.for_ppx_deriving (version: n/a)
ppx_sexp_message    (version: 113.24.00)
ppx_sexp_value      (version: 113.24.00)
sexplib             (version: 113.24.00)
sexplib.num         (version: 113.24.00)
sexplib.unix        (version: 113.24.00)
对于我的新手来说,这表明sexplib.syntax并不存在


有人知道如何解决这个问题吗?

我怀疑这是一个bug,是由核心套件最近从camlp4过渡到ppx引起的。它应该固定在
113.24.01
中,因此请确保

 opam update
 opam upgrade
然后安装最新版本:

 opam install core.113.24.01
如果这没有帮助,那么另一个选择是在转换之前回退到较旧的版本,比如

 opam install core.113.00.00
为了防止库自动升级,您可以将其锁定:

 opam pin add core 113.00.00

core.syntax
从113.24.00版开始不再受支持。我对core做了一个小版本(113.24.02)以使其有效

您现在应该使用
ppx\u jane
。它相当于Jane Street ppx重写器的
core.syntax
。真实世界的OCaml指令已经更新

您可以将
ppx_jane
作为常规findlib包使用,也可以直接使用:

(* Regular findlib package *)
# #require "ppx_jane";;
(* Directly *)
# #ppx "ppx-jane -as-ppx";;

上面没有提到的一个方面是,安装opam包
sexplib
不足以获得findlib
sexplib.syntax
,即使是113.00.00版或更早版本:请确保也安装opam软件包
type_conv

即使在更新/升级之后,我仍然存在此问题:
ocamlfind list | grep sexpliblib
未列出sexplib。syntaxI首先尝试安装core 113.00.00-可能这与此相关?您最终获得的core版本是什么?您是否锁定了它?我锁定了它,但后来移除了该锁定(opam pin移除core),然后执行并更新/升级。@BillyBadBoy:我尝试先安装core.113.00.00,然后更新/升级。这使得我没有核心来满足未满足的依赖关系
core->variantslib<109.16.00
。我最终切换回了以前的状态。我已经安装了ppx_jane和Sexpliblib,但是sitll无法使用sexp;
type t={foo:int;bar:float}执行以下操作:具有核心-0.9.1