Article 4DF7E Calling Python from Mathematica

Calling Python from Mathematica

by
John
from John D. Cook on (#4DF7E)

The Mathematica function ExternalEvalute lets you call Python from Mathematica. However, there are a few wrinkles.

I first pasted in an example from the Mathematica documentation and it failed.

 ExternalEvaluate[ "Python", {"def f(x): return x**2", "f(3)"} ]

It turns out you (may) have to tell Mathematica where to find Python. I ran the following, tried again, and the example worked.

 RegisterExternalEvaluator[ "Python", "C:\\bin\\Anaconda3\\python.EXE" ]

You can also run Python with NumPy loaded using

 ExternalEvaluate["Python-NumPy", " ]

except that didn't work the first time either. You have to register a Python-NumPy evaluator separately. So I ran

 RegisterExternalEvaluator[ "Python-NumPy", "C:\\bin\\Anaconda3\\python.EXE" ]

and then tried again calling Python code using NumPy. But then there's the question of how it imports NumPy. Does it simply run import numpy, or maybe from numpy import *, or maybe import numpy as np? It turns out the first possibility is what happens. So to print pi from NumPy, your code string needs to be numpy.pi.

You don't need to use Python-NumPy if you just do your own importing. For example, this code returns I^2.

 ExternalEvaluate[ "Python", "import numpy; x = numpy.pi; x**2" ]

And you can import any library you'd like, not just NumPy.

 ExternalEvaluate[ "Python", "from sympy import isprime; isprime(7)" ]

Everything above applies to Mathematica 11.3 and Mathematica 12.

Mnv8bw8JboE
External Content
Source RSS or Atom Feed
Feed Location http://feeds.feedburner.com/TheEndeavour?format=xml
Feed Title John D. Cook
Feed Link https://www.johndcook.com/blog
Reply 0 comments