https://github.com/juancarlospaco/nimscript4python#nimscript4python
Done after the talk of Nim Conf 2020.
$ echo "echo 42" > example.nims
$ pip install nim4py==0c42da8
$ python3.8
>>> import nim4py
>>> nim4py.nimscript("example.nims",
["/home/juan/.choosenim/toolchains/nim-1.3.5/lib/"])
42
>>>
:)
If you call a specific proc, you get back a (PNode)[https://github.com/nim-lang/Nim/blob/version-1-2/compiler/ast.nim#L721], which you can get a value out of. Something like:
import compiler / [nimeval]
writeFile "script.nim", "proc main*: string = \"hello world\""
let
stdlib = findNimStdLibCompileTime()
intr = createInterpreter("script.nim", [stdlib, stdlib & "core"])
intr.evalScript()
let val = intr.callRoutine(intr.selectRoutine("main"), []).strVal
echo "Return val is: " & val