MATLAB Answers

How to add Python Libraries which are referenced in a Python routine

17 views (last 30 days)
Tom Sutherland
Tom Sutherland on 4 Feb 2021
Commented: Sean de Wolski on 11 Feb 2021
I want to call a python routine from Matlab and run it and get the resultant data back from the routine to process in Matlab. The python routine "myfunc.py" imports a bunch of libraries, numpy, time and others. When I go through the Matlab explaination of how to call a python function I get an error saying it can't find numpy.
Error using mymod><module> (line 3)
Python Error: ModuleNotFoundError: No module named 'numpy'
Error in <frozen importlib>_call_with_frames_removed (line 219)
Error in <frozen importlib>exec_module (line 728)
Error in <frozen importlib>_exec (line 630)
Error in __init__>reload (line 169)
I have looked at the references in Matlab "https://www.mathworks.com/help/matlab/matlab_external/differences-between-matlab-python.html" and others but they seem to just show how to call a function defined inside a library. Can you call a function like myfunc.py , shown below, and use it even if it imports libraries ?
Looks like I can run a function "add2" in the myfunc1.py file by using the following
val = py.myfunc1.add2(2,3) ---> Will work
BUT
val = py.myfunc2.add2(4,5) ---> will give me errors that it can't find the libraries numpy and/or time
DO I HAVE TO LOOK INTO EVERY PYTHON FILE AND SOMEHOW ADD THOSE LIBRARIES ONE AT A TIME SO MATLAB SEES THEM?
------ Python Code ------------------------
myfunc1.py
def add2 (a,b):
c = a+b
return c
myfunc2.py
import numpy as np
import time
def add2(a,b):
numsum = np.add(a,b)
return numsum

Answers (3)


Tom Sutherland
Tom Sutherland on 4 Feb 2021
I am running Spyder(Python 3.8) and the python files work there. How do I tell where Spyder is getting numpy from and how to tell Matlab to get it from the same place?

Tom Sutherland
Tom Sutherland on 4 Feb 2021
My Matlab
PythonEnvironment with properties:
Version: "3.7"
Executable: "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\python.exe"
Library: "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\python37.dll"
Home: "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64"
Status: Loaded
ExecutionMode: InProcess
ProcessID: "16392"
ProcessName: "MATLAB"
But I have installed Anaconda3 and using Spyder and its packages are in
C:\ProgramData\Anaconda3\Lib\site-packages
How do I get Matlab to "see" them or use them?
  1 Comment
Sean de Wolski
Sean de Wolski on 11 Feb 2021
Specify the executable or version in the input to pyenv(). It should be pointing at Python 3.8 not Python 3.7.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!