Contenu principal

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 textwrap

Pour 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 pyrun ou pyrunfile ne 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 pyrun et pyrunfile ne 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éfixe py. pour y accéder.

  • La conversion de type basée sur les indications de type Python n’est pas supportée pour pyrun, pyrunfile ni la tâche Run Python Code (Exécuter du code Python) où du code Python natif est passé en entrée.

Voir aussi

|

Rubriques

Sites web externes