同样作为Julia的调用外部程序工具包,PythonCall和PyCall包有什么区别?他们的关系是什么?截止2022年年初,推荐用哪个包?
PythonCall更新,但我没有使用过。细节的区别参见PythonCall的文档 Coming from PyCall?。
阅读文档下来的感觉是,这个包在Python调用Julia的部分可能做得更好,但是Julia调用Python的部分有待实际操作验证。
1 个赞
PythonCall初步使用体验:
- 这个包默认需要和另一个包
CondaPkg.jl
配合起来使用。和PyCall不一样的一点是,PythonCall不提供面向系统内已经使用的Python的连接,而是单独在.julia/
下面下载了一个独立的Conda。这样的好处是不需要操心和系统各个版本Python兼容的问题,缺点是额外又多了一个Python。PyCall既可以对接已有的Python版本,也可以独立安装Conda。如果不想另外装一个Conda而是使用已有的Conda,可以通过ENV["JULIA_PYTHONCALL_EXE"] = "python"; using PythonCall
来对接Conda下的Python版本。 - 显然作者是觉得当前的PyCall不好用,所以自己另起炉灶搞了个新的。在设计上针对PyCall的一些问题有一些他的解决思路,并在类型转换中更加小心。
CondaPkg
这个包在安装诸如Matplotlib时依赖还存在一些Bug,但是给够时间和投入会做得很好。- 明显地Python调用Julia的部分至少API JuliaCall比PyJulia更加清爽,可能问题也更少。
PythonCall
目前无法实现Python文档的对接,比如PyPlot
下可以想查看Julia函数帮助一样查看Python帮助。但这个问题以后肯定有办法解决的。
综合下来,我的建议是:如果你已经比较熟练Julia和Python中互调,尝试使用这个新的PythonCall和对应的JuliaCall;如果你刚上手,已有的PyCall生态更成熟。
1 个赞