免费的Wolfram Engine实现Mathematica

免费的Wolfram Engine实现Mathematica

Wolfram官网

下载Wolfram Engine

下载完成后还需在官网完成账号注册和免费Wolfram Engine许可证的注册

具体细节见官网手册

下载Wolfram Player

一路回车安装

完成后需要将WolframPlayer.exe所在的路径添加至环境变量,我添加的路径是C:\Program Files\Wolfram Research\Wolfram Player\13.2

配置Visual Studio Code

  1. 首先,你需要一个VScode
  2. 下载Vscode中的Wolfram Language Notebook插件

这时新建一个*.wlnb的测试文件,就可以测试扩展和Wolfram Engine是否可用了

扩展设置:

建议勾选:

  • Wolfram Language Notebook › Rendering: Image With Transparency

在没有使用Wolfram Player时渲染图片可以剔除背景

接入Wolfram Player

参考链接

找到文件夹C:\Users\username\AppData\Roaming\WolframEngine\Kernel,文件夹中有一个名为init.m的文件,将其打开并在结尾添加以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
BeginPackage["CommandLineUtilities`Display`"];

WolframPlayer;

Begin["`Private`"];

$TemporaryOutput = FileNameJoin@{$TemporaryDirectory, "WolframKernelOutput"};
If[!DirectoryQ@#, CreateDirectory@#] &@$TemporaryOutput;
WriteToShell[str_] := (
If[Head@$ShellProcess =!= ProcessObject, $ShellProcess = StartProcess@$SystemShell];
WriteLine[$ShellProcess, str];
str
)

MakeNotebook[box_] := Notebook[{Cell@BoxData@box}, WindowSize -> All]

WolframPlayer[expr_, box_] := (
$WolframPlayerProcess = If[# === {}, StartProcess@"WolframPlayer", None] &@SystemProcesses@"WolframPlayer";
StringJoin[
"WolframPlayer ",
Export[FileNameJoin@{$TemporaryOutput, CreateUUID["CDFOutput-"]<>".cdf"}, MakeNotebook@box, "CDF"]
] //WriteToShell;
ExportString[OutputForm@expr, "Text"]
)

$Epilog := (
KillProcess/@{$ShellProcess, $WolframPlayerProcess};
Quiet@DeleteFile@FileNames[__, $TemporaryOutput];
If[FindFile["end`"] =!= $Failed, << "end`"] (* Original definition. You can read it with OwnValues. *)
)

End[];

EndPackage[];

(*$DisplayFunction = WolframPlayer[#, ToBoxes@#]&;*)
$Post = With[{box = ToBoxes@#},
If[FreeQ[DynamicBox|DynamicModuleBox|GraphicsBox|Graphics3DBox]@box,
#,
WolframPlayer[#, box]
]
]&;

保存并退出

Wolfram Player在渲染Manipulate函数时可能引起排版错误导致滑动条不可见

解决办法:在Wolfram Player弹出的图像窗口中选择窗口(W)->重排窗口->水平平铺窗口(H)可大概率解决