Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

f2py pour fortran


Sujet :

Interfaçage autre langage Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2016
    Messages : 10
    Points : 5
    Points
    5
    Par défaut f2py pour fortran
    Bonjour, je dois faire un programme (pour du calcul scientifique) et j'aimerais utiliser fortran et python.

    j'essaye depuis hier d'installer f2py pour pouvoir utiliser du fortran dans mon programme python, mais je n'arrive pas à le faire marcher.

    je suis sous windows 7 , j'ai installé mingw pour compiler les programmes fortran, j'ai installé python et numpy, (mes programmes avec python et numpy fonctionnent)
    mais je n'arrive pas à faire fonctionner f2py, qui est pourtant supposé faire partie de numpy

    j'ai suivi ce tutorial :
    http://www.engr.ucsb.edu/~shell/che210d/f2py.pdf

    ils me disent : pour compiler un module avec f2py, entrez une commande de la forme suivante :
    f2py –c –m MODULENAME SOURCE.f90 --fcompiler=gnu95 --compiler=mingw32

    donc j'ai testé ça, mais au lieu de compiler, ça m'affiche cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
     
     
    C:\Users\Camille\Desktop\Paul\stage\Programmes python> f2py -c -m hello.f90 --fc
    ompiler=gnu95 --compiler=mingw32
    running build
    running config_cc
    unifing config_cc, config, build_clib, build_ext, build commands --compiler opti
    ons
    running config_fc
    unifing config_fc, config, build_clib, build_ext, build commands --fcompiler opt
    ions
    running build_src
    build_src
    building extension "hello.f90" sources
    build_src: building npy-pkg config files
    running build_ext
    Traceback (most recent call last):
      File "C:\Program Files\Python35-32\Scripts\f2py.py", line 28, in <module>
        main()
      File "c:\program files\python35-32\lib\site-packages\numpy\f2py\f2py2e.py", li
    ne 648, in main
        run_compile()
      File "c:\program files\python35-32\lib\site-packages\numpy\f2py\f2py2e.py", li
    ne 633, in run_compile
        setup(ext_modules=[ext])
      File "c:\program files\python35-32\lib\site-packages\numpy\distutils\core.py",
     line 169, in setup
        return old_setup(**new_attr)
      File "c:\program files\python35-32\lib\distutils\core.py", line 148, in setup
        dist.run_commands()
      File "c:\program files\python35-32\lib\distutils\dist.py", line 955, in run_co
    mmands
        self.run_command(cmd)
      File "c:\program files\python35-32\lib\distutils\dist.py", line 974, in run_co
    mmand
        cmd_obj.run()
      File "c:\program files\python35-32\lib\site-packages\numpy\distutils\command\b
    uild.py", line 47, in run
        old_build.run(self)
      File "c:\program files\python35-32\lib\distutils\command\build.py", line 135,
    in run
        self.run_command(cmd_name)
      File "c:\program files\python35-32\lib\distutils\cmd.py", line 313, in run_com
    mand
        self.distribution.run_command(command)
      File "c:\program files\python35-32\lib\distutils\dist.py", line 974, in run_co
    mmand
        cmd_obj.run()
      File "c:\program files\python35-32\lib\site-packages\numpy\distutils\command\b
    uild_ext.py", line 117, in run
        force=self.force)
      File "c:\program files\python35-32\lib\site-packages\numpy\distutils\ccompiler
    .py", line 596, in new_compiler
        compiler = klass(None, dry_run, force)
      File "c:\program files\python35-32\lib\site-packages\numpy\distutils\mingw32cc
    ompiler.py", line 58, in __init__
        dry_run, force)
      File "c:\program files\python35-32\lib\distutils\cygwinccompiler.py", line 157
    , in __init__
        self.dll_libraries = get_msvcr()
      File "c:\program files\python35-32\lib\distutils\cygwinccompiler.py", line 86,
     in get_msvcr
        raise ValueError("Unknown MS Compiler version %s " % msc_ver)
    ValueError: Unknown MS Compiler version 1900
     
    C:\Users\Camille\Desktop\Paul\stage\Programmes python>
    quelqu'un pourrait m'aider à déchiffrer ça ?

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 602
    Points : 24 774
    Points
    24 774
    Par défaut
    Citation Envoyé par isaz24 Voir le message
    quelqu'un pourrait m'aider à déchiffrer ça ?
    Lorsque vous avez ce genre de problème, le plus simple est de lancer une recherche avec votre moteur favori sur "ValueError: Unknown MS Compiler version 1900". Il faut lire les différentes entrées, voir si elles s'appliquent à votre cas, appliquer la solution s'il y en a.
    Seuls pourraient vous aider ceux qui ayant suivi le même chemin que vous ont déjà trié et testé.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    3 743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 3 743
    Points : 7 283
    Points
    7 283
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Juste une idée.

    Bizarrement, tu as demandé le compilateur mingw dans la ligne de commande, mais il échoue parce qu'il ne trouve pas le compilateur de Microsoft...

    Il est possible que la nature du code en question nécessite impérativement le compilateur de Microsoft, auquel cas, il est possible de l'installer: Visual Studio (la version gratuite suffit).

    Mais il est possible aussi qu'il soit nécessaire de préciser le choix du compilateur à un autre endroit que la ligne de commande. Ça m'est déjà arrivé avec Cython: comme j'ai les 2 compilateurs, la compilation appelle par défaut le compilateur de Microsoft. Si je veux mingw, je le précise dans un petit fichier texte appelé "setup.cfg" et contenant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [build]
    compiler = mingw32
    Pour le compilateur de Microsoft, il suffit de mettre "msvc" à la place.

    Regarde dans ta doc si il n'y a pas une astuce de ce genre.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2016
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Lorsque vous avez ce genre de problème, le plus simple est de lancer une recherche avec votre moteur favori sur "ValueError: Unknown MS Compiler version 1900". Il faut lire les différentes entrées, voir si elles s'appliquent à votre cas, appliquer la solution s'il y en a.
    Seuls pourraient vous aider ceux qui ayant suivi le même chemin que vous ont déjà trié et testé.

    - W
    c'est la première chose que j'ai faite, mais je n'ai pas trouvé de résultat correspondant vraiment à ma situation.


    Il est possible que la nature du code en question nécessite impérativement le compilateur de Microsoft, auquel cas, il est possible de l'installer: Visual Studio (la version gratuite suffit).
    j'ai essayé de le télécharger, mais après plusieurs heures d'installation , le programme d'installation m'a annoncé que l'installation avait échoué.

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Profil pro
    Inscrit en
    décembre 2007
    Messages
    3 743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 3 743
    Points : 7 283
    Points
    7 283
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'ai un peu regardé f2py (qui est effectivement dans numpy), et il y a beaucoup de subtilités et peu de doc à jour. Bref, en 1 heure et en utilisant les infos disponibles j'arrive à compiler sans erreur, mais pas à importer... Apparemment, même si on compile avec mingw32, on a besoin de la dll de Windows, probablement pour assurer la connexion avec Python, mais il faut la bonne: celle du Visual Studio utilisé pour compiler Python (msvcr100.dll pour Python 3.4?) et la bonne version 32 ou 64bits. Bref, j'arrête: c'est beaucoup trop compliqué (pour moi en tout cas ).

    Ton objectif est-il d'utiliser fortran, ou de faire seulement des morceaux de code plus rapide?

    Si c'est le 2ème objectif:

    - tu devrais plutôt utiliser Cython: c'est plus proche de Python qui est écrit en C et ça marche très bien: le code Python est un peu modifié (ex: déclaration des variables) puis est converti en C (ou en C++) et compilé. J'ai fait un petit tuto sur le sujet: http://python.jpvweb.com/mesrecettes...ple_cython_cpp.

    - certains calculs sont très accélérés en utilisant simplement des modules spécialisés pour le calcul comme gmpy2 ou mpmath (les 2 sont facilement installés avec pip). Dans un de mes programmes utilisant des entiers longs, j'ai ainsi divisé par 15 le temps d'exécution en utilisant seulement gmpy2.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 602
    Points : 24 774
    Points
    24 774
    Par défaut
    Citation Envoyé par isaz24 Voir le message
    c'est la première chose que j'ai faite, mais je n'ai pas trouvé de résultat correspondant vraiment à ma situation.
    Bizarre! La première entrée que me retourne Google décrit un problème fort similaire.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Cours à télécharger pour Fortran
    Par Community Management dans le forum Fortran
    Réponses: 1
    Dernier message: 06/03/2015, 12h06
  2. IDE Windows pour Fortran
    Par genteur slayer dans le forum Fortran
    Réponses: 5
    Dernier message: 25/04/2007, 12h47
  3. Réponses: 2
    Dernier message: 06/09/2006, 15h26
  4. Réponses: 2
    Dernier message: 20/06/2006, 14h45
  5. openGL pour fortran 90
    Par baptwo dans le forum OpenGL
    Réponses: 3
    Dernier message: 13/12/2005, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo