Exemple : Utiliser des modules Python dans un fichier export ============================================================ .. _U1.04.00_Importation_des_dossiers: Supposons que l'arborescence de notre projet soit : .. code-block:: text project ├── mesh_file.mmed ├── command_file.comm ├── export_file.export ├── src │ ├── __init__.py │ └── python_file.py Le fichier export, qui contient les informations pour l'exécution de l'étude, est de la forme : .. code-block:: text P actions make_etude P time_limit 60 P memory_limit 512 P ncpus 1 P mpi_nbcpu 1 P mpi_nbnoeud 1 P version stable F comm command_file.comm D 1 F mmed mesh_file.mmed D 20 À ce fichier export, il faudrait rajouter une ligne pour indiquer le chemin du dossier à considérer lors du calcul. En fonction du cas, cette ligne peut être : - Quand on utilise run_aster : .. code-block:: text R nom chemin_du_src D 0 - Quand on utilise astk: .. code-block:: text R repe chemin_du_src D 0 La différence entre ces deux cas est due au fait qu'astk, jusqu'à la version 17.2 de code_aster, restreint le type *nom* pour des fichiers. Le type à utiliser est alors *repe*. De ce fait, il faut aussi adapter la façon d'appeler les fonctions dans les fichiers du dossier *src* de notre exemple. Appel de fonctions avec run_aster --------------------------------- La façon d'importer dans le fichier command_file.comm les fonctions contenues dans python_file.py est la suivante : .. code-block:: python from src.python_file import my_function En supposant que le fichier python_file.py contient : .. code-block:: python def my_function(): pass Appel de fonctions avec astk ----------------------------- Il faut noter que quand on importe un dossier avec *repe*, astk va copier les fichiers du dossier dans un dossier de nom REPE_IN dans le répertoire temporaire. Cette manipulation signifie que les modules Python doivent non plus être importés depuis ``src``, mais depuis ``REPE_IN``. Dans le fichier de commande, la façon d'importer les fonctions devient : .. code-block:: python from REPE_IN.python_file import my_function Remarque : astk ne permet pas d'avoir plus d'un dossier *repe*. Alors qu'avec run_aster, qui est la solution recommandée, il est possible d'en avoir plusieurs.