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