27 lines
661 B
D
27 lines
661 B
D
module matplotlibd.core.pycall;
|
|
|
|
|
|
void call(string py_script) {
|
|
import std.process: environment, pipeProcess, wait, Redirect;
|
|
|
|
auto py_path = environment.get("MATPLOTLIB_D_PYTHON", "python3");
|
|
auto pipes = pipeProcess(py_path, Redirect.stdin | Redirect.stderr);
|
|
|
|
pipes.stdin.writeln(py_script);
|
|
pipes.stdin.writeln("exit()");
|
|
pipes.stdin.close();
|
|
|
|
auto result = wait(pipes.pid);
|
|
|
|
if (result != 0) {
|
|
string error;
|
|
foreach (line; pipes.stderr.byLine)
|
|
error ~= line ~ "\n";
|
|
throw new Exception("\n\nERROR occurred in Python:\n" ~ error);
|
|
}
|
|
}
|
|
|
|
unittest {
|
|
call("print(\"Passing!\")\n");
|
|
}
|