Appeler directement les fonctionnalités Python depuis MATLAB
Il est possible d’appeler les fonctionnalités de bibliothèques Python® ou d’exécuter des instructions Python directement depuis MATLAB®.
Accéder aux modules Python
Pour accéder aux bibliothèques Python, ajoutez le préfixe py. au nom Python. Par exemple :
py.list({'This','is a','list'}) % Call built-in function list
py.textwrap.wrap('This is a string') % Call wrap function in module textwrapPour plus d’informations, consultez Access Python Modules from MATLAB - Getting Started.
Exécuter du code Python
Pour exécuter des instructions Python dans l’interpréteur Python à partir de l’invite de commande MATLAB, utilisez la fonction pyrun. Celle-ci permet d’exécuter du code qui passe des types MATLAB en entrée et renvoie certaines ou l’ensemble des variables à MATLAB. Supposons par exemple que vous exécutiez l’instruction suivante dans un interpréteur Python.
>>> l = ['A', 'new', 'list']
Pour exécuter cette instruction depuis MATLAB, utilisez pyrun. Pour renvoyer le résultat dans une variable MATLAB nommée myList, ajoutez "l" comme argument outputs :
myList = pyrun("l = ['A', 'new', 'list']", "l");
Exécuter des scripts Python
Pour appeler un script Python à partir de l’invite de commande MATLAB, utilisez la fonction pyrunfile. Vous passez des données MATLAB et renvoyez des variables de la même façon qu’avec pyrun. Par exemple, créez un fichier mklist.py avec les instructions suivantes :
# Python script file mklist.py:
s = 'list'
L = ['A', 'new', s]
Exécutez le script depuis MATLAB :
myListFile = pyrunfile("mklist.py", "L")
myListFile =
Python list with no properties.
['A', 'new', 'list']
Accéder aux variables Python
Lorsque vous utilisez le préfixe py., MATLAB importe le module entier et peut accéder à toutes les fonctions et classes du code Python. En revanche, lorsque vous exécutez du code Python avec les fonctions pyrun ou pyrunfile et que vous souhaitez accéder aux données Python, vous devez renvoyer des objets Python de manière explicite à MATLAB avec l’argument outvars.
Limitations des fonctions pyrun et pyrunfile
Les classes Python définies avec
pyrunoupyrunfilene sont pas modifiables si vous renvoyez une instance de la classe à MATLAB. Si vous devez modifier les définitions de classes, redémarrez la session de l’interpréteur :terminate(pyenv) pyenv(ExecutionMode="OutOfProcess")
Une autre possibilité consiste à redémarrer MATLAB pour
"InProcess".Les fonctions
pyrunetpyrunfilene supportent pas les classes avec des variables locales qui sont initialisées par d’autres variables locales via des méthodes. Pour ce type d’utilisation, créez un module et utilisez le préfixepy.pour y accéder.La conversion de type basée sur les indications de type Python n’est pas supportée pour
pyrun,pyrunfileni la tâche Run Python Code (Exécuter du code Python) où du code Python natif est passé en entrée.