How to use Mathematica functions in Python programs?
I'd like to know how can I call Mathematica functions from Python.
I appreciate a example, for example, using the Mathematica function Prime .
I had search about MathLink but how to use it in Python is a little obscure to me.
I tried to use a Mathematica-Python library called pyml but I hadn't no sucess, maybe because this lib looks very old (in tutorial says Mathematica 2 or 3).
Tried compile a source in Wolfram/Mathematica/8.0/SystemFiles/Links/Python
but ended with several errors when using python 2.6 (documentation says should work to python 2.3 only).
Pythonika is interesting, but, looks like is just to use in Mathematica notebooks and I would like write .py
files who calls Mathematica functions.
So, someone knows a good way to write python programs who uses Mathematica functions and can give me an example?
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 (support@wolfram.com 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
链接地址: http://www.djcxy.com/p/6058.html上一篇: 如何正确清理Excel互操作对象?