How to use Mathematica functions in Python programs?

I had found a solution.

Steps:

1-Create a script named runMath with the content:

#!/usr/local/bin/MathematicaScript -script

value=ToExpression[$ScriptCommandLine[[2]]];

(*The next lime prints the script name.*)
(*Print[$ScriptCommandLine[[1]]];*)

Print[value];

2-I gave execution privilege to the file.

sudo chmod +x runMath

3-Moved the file to the execution path

sudo mv runMath /usr/bin/

4-Created a new script called run with the content:

#!/usr/bin/python
from subprocess import *
from sys import *

command='/usr/bin/runMath'
parameter=argv[1]

call([command,parameter])

5-Moved to the execution path

sudo mv run /usr/bin

6-Finally, tested it:

$run Prime[100]
541

$run 'Sum[2x-1,{x,1,k}]'
k^2

$run Integrate[Log[x],x]
-x + x*Log[x]

$run 'Zeta[2]'
Pi^2/6

You can use with or without '. The ' are needed for commands with spaces.

$run 'f[n_] := f[n] = f[n - 1] + f[n - 2]; f[1] = f[2] = 1; Table[f[n],{n,5}]'
{1, 1, 2, 3, 5}

Happy!


You can call Mathematica function in Python using the Python MathLink module (the source you found in .../SystemFiles/Links/Python), though you'll need to edit a couple of setup files to get it up and running ([email protected] should be able to help you out there).

To use Prime from Python you would run something like:

kernel.ready()

0

kernel.putfunction("Prime",1)

kernel.putinteger(10)

kernel.flush()

kernel.ready()

1

kernel.nextpacket()

3

packetdescriptiondictionary[3]

'ReturnPacket'

kernel.getinteger()

29