IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Python Discussion :

Parser une adresse


Sujet :

Python

  1. #21
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    J'ai tout de même essayé la deuxième librairie fraddress qui devrait mieux reconnaitre des adresses françaises.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import fraddress
    print(fraddress.parse("Les Vignes d'en Grach, Route de Graulhet, GIROUSSENS, 81500, FR"))
    Malheureusement le résultat n'est pas meilleur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [('Les', 'NotAddress'), ('Vignes', 'NotAddress'), ("d'en", 'NotAddress'), ('Grach,', 'NotAddress'), ('Route', 'NotAddress'), ('de', 'NotAddress'), ('Graulhet,', 'NotAddress'), ('GIROUSSENS,', 'NotAddress'), ('81500,', 'Zipcode'), ('FR', 'City')]

  2. #22
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 006
    Points : 9 400
    Points
    9 400
    Par défaut
    hello,
    finalement puisque j'arrive à installer le module python chez moi, j'ai fabriqué le wheel pour python 3.8 et python 3.9 en 64 bits ( dans pièce jointe)
    exemple d'installation pour python 3.8 : pip install postal-1.1.9-cp38-cp38-win_amd64.whl
    Ne pas oublier de copier la dll libpostal-1.dll dans le répertoire du module postal et la renommer postal.dll.
    Attention comme je l'avais indiqué :
    Install [msys2](http://msys2.org) and launch a shell using the `MSYS2 MingW 64-bit` start menu option, **not** the usual `MSYS2 MSYS` option.
    This is important because we don't want our `libpostal.dll` to [link to](https://www.davidegrayson.com/windev/msys2/) `msys-2.0.dll` (Python seems to hang if you load this DLL).
    Il y a 4 consoles pour MSYS2 :
    MSYS2 MSYS
    MSYS2 MinGW 64-bit
    MSYS2 MinGW 32-bit
    MSYS2 MinGW UCRT 64-bit


    Il faut avoir compiler la librairie C libpostal dans la console MSYS2 MinGW 64-bit (pour du 64 bits) pour ne pas avoir le problème évoqué (dépendance avec msys-2.0.dll).


    Ami calmant, J.P
    Fichiers attachés Fichiers attachés

  3. #23
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,
    finalement puisque j'arrive à installer le module python chez moi, j'ai fabriqué le wheel pour python 3.8 et python 3.9 en 64 bits ( dans pièce jointe)
    exemple d'installation pour python 3.8 : pip install postal-1.1.9-cp38-cp38-win_amd64.whl
    Ne pas oublier de copier la dll libpostal-1.dll dans le répertoire du module postal et la renommer postal.dll.
    Attention comme je l'avais indiqué :
    Il y a 4 consoles pour MSYS2 :
    MSYS2 MSYS
    MSYS2 MinGW 64-bit
    MSYS2 MinGW 32-bit
    MSYS2 MinGW UCRT 64-bit


    Il faut avoir compiler la librairie C libpostal dans la console MSYS2 MinGW 64-bit (pour du 64 bits) pour ne pas avoir le problème évoqué (dépendance avec msys-2.0.dll).


    Ami calmant, J.P

    Merci beaucoup pour ta patience et le temps que tu m'accordes.

    Du coup, je repars sur une installation complète en essayant de suivre correctement les instructions.

    Pour récapituler j'ai réinstallé MSYS64 sur mon poste, j'ai bien exécuté la console MSYS2 MinGW 64-bit.

    J'ai fait copié collé du script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    pacman -S autoconf automake curl git make libtool gcc mingw-w64-x86_64-gcc
    git clone https://github.com/openvenues/libpostal
    cd libpostal
    cp -rf windows/* ./
    ./bootstrap.sh
    ./configure --datadir=/c
    make
    make install
    mkdir headers && cp -r /usr/include/libpostal/ headers/
    Au moment de l'installation, on me demande si je veux procéder à l'installation, j'écris Y pour Yes.


    Les composants s'installent et à la fin j'obtiens ceci :


    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
     
    Installation MSYS64
     
    /usr/bin/mkdir -p '/mingw64/include/libpostal'
     /usr/bin/install -c -m 644 libpostal.h '/mingw64/include/libpostal'
    make[2]: Leaving directory '/home/john/libpostal/src'
    make[1]: Leaving directory '/home/john/libpostal/src'
    Making install in test
    make[1]: Entering directory '/home/john/libpostal/test'
    make[2]: Entering directory '/home/john/libpostal/test'
    make[2]: Nothing to be done for 'install-exec-am'.
    make[2]: Nothing to be done for 'install-data-am'.
    make[2]: Leaving directory '/home/john/libpostal/test'
    make[1]: Leaving directory '/home/john/libpostal/test'
    make[1]: Entering directory '/home/john/libpostal'
    make[2]: Entering directory '/home/john/libpostal'
    make[2]: Nothing to be done for 'install-exec-am'.
     /usr/bin/mkdir -p '/mingw64/lib/pkgconfig'
     /usr/bin/install -c -m 644 libpostal.pc '/mingw64/lib/pkgconfig'
    make[2]: Leaving directory '/home/john/libpostal'
    make[1]: Leaving directory '/home/john/libpostal'
    cp: cannot stat '/usr/include/libpostal/': No such file or directory
    Je sais pas si c'est rassurant la dernière ligne ?


    Je me suis rendu compte que je n'ai pas suivi les instructions suivantes car je n'ai pas compris ce que je dois faire :


    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
     
    Modify libpostal.def like that (libpostal.def is in the folder of libpostal) :
    EXPORTS
    libpostal_address_parser_response_destroy
    libpostal_expand_address
    libpostal_expand_address_root
    libpostal_expansion_array_destroy
    libpostal_get_address_parser_default_options
    libpostal_get_default_duplicate_options
    libpostal_get_default_fuzzy_duplicate_options
    libpostal_get_default_fuzzy_duplicate_options_with_languages
    libpostal_get_default_options
    libpostal_get_duplicate_options_with_languages
    libpostal_get_near_dupe_hash_default_options
    libpostal_is_floor_duplicate
    libpostal_is_house_number_duplicate
    libpostal_is_name_duplicate
    libpostal_is_name_duplicate_fuzzy
    libpostal_is_po_box_duplicate
    libpostal_is_postal_code_duplicate
    libpostal_is_street_duplicate
    libpostal_is_street_duplicate_fuzzy
    libpostal_is_toponym_duplicate
    libpostal_is_unit_duplicate
    libpostal_near_dupe_hashes
    libpostal_near_dupe_hashes_languages
    libpostal_normalize_string
    libpostal_normalize_string_languages
    libpostal_normalized_tokens
    libpostal_normalized_tokens_languages
    libpostal_parse_address
    libpostal_parser_print_features
    libpostal_place_languages
    libpostal_setup
    libpostal_setup_datadir
    libpostal_setup_language_classifier
    libpostal_setup_language_classifier_datadir
    libpostal_setup_parser
    libpostal_setup_parser_datadir
    libpostal_teardown
    libpostal_teardown_language_classifier
    libpostal_teardown_parser
    libpostal_tokenize
    Est-ce que je dois changer quelque chose à ces fichiers ? D'ailleurs je ne sais pas où ils se trouvent. Est-ce que je dois copier dans la ligne de commande la partie EXPORTS + tous les noms de fichiers ?


    Avant de passer à l'étape suivante, j'aimerais confirmer avec toi ce qu'il est demandé dans cette instruction.


    J'ai fait aussi plusieurs captures d'écran des différents dossiers, peut-être que ça peut donner une indication sur ce que j'ai raté.


    Le fichier libpostal.h se retrouve dans le dossier msys64/mingw64/include/libpostal/

    Nom : libpostal_h.PNG
Affichages : 156
Taille : 5,6 Ko



    Par contre le fichier n'est pas présent dans le répertoire : home\john\libpostal\headers


    Nom : john_libpostal.PNG
Affichages : 115
Taille : 4,6 Ko


    On sait que le problème vient de mon manque de connaissance sur l'installation de ces fichiers, mais j'espère qu'avec ton aide, je puisse installer correctement cette librairie.

    En tout cas, merci beaucoup de ton aide.

  4. #24
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 006
    Points : 9 400
    Points
    9 400
    Par défaut
    Citation Envoyé par frutz Voir le message
    Je sais pas si c'est rassurant la dernière ligne ?
    non ce n'est pas rassurant . voir plus bas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Modify libpostal.def like that (libpostal.def is in the folder of libpostal)
    cela veut dire qu'il faut éditer le fichier libpostal.def qui est dans le répertoire où a été cloné libpostal et remplacer ce qui est dedans par tout ce qu'il y a d'écrit dans mon message.


    Le fichier libpostal.h se retrouve dans le dossier msys64/mingw64/include/libpostal/

    Nom : libpostal_h.PNG
Affichages : 156
Taille : 5,6 Ko



    Par contre le fichier n'est pas présent dans le répertoire : home\john\libpostal\headers

    Pour le fichier libpostal.h le plus facile c'est de le mettre où il peut être vu par le compilateur par exemple pour toi :
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include

    Dans ce cas ce n'est plus la peine d'exécuter la ligne qui crée le répertoire headers et qui copie le fichier libpostal.h

    Ami calmant, J.P

  5. #25
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Je te remercie pour ces nouvelles explications.

    Du coup, j'ai édité le fichier libpostal.def en modifiant le script comme ceci :

    Nom : libpostal_def.PNG
Affichages : 109
Taille : 48,1 Ko



    Puis j'ai copié le fichier libpostal.h dans le répertoire Visual Studio comme ceci :


    Nom : Capture.PNG
Affichages : 112
Taille : 19,5 Ko


    Malheureusement, j'obtiens toujours ce message d'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
    C:\Python\Python38\Scripts>pip install postal --global-option=build_ext --global-option="-IC:\msys64\home\john\libpostal\headers" --global-option="-LC:\msys64\home\john\libpostal"
    c:\python\python38\lib\site-packages\pip\_internal\commands\install.py:229: UserWarning: Disabling all use of wheels due to the use of --build-option / --global-option / --install-option.
      cmdoptions.check_install_build_global(options)
    Collecting postal
      Using cached postal-1.1.9.tar.gz (19 kB)
    Requirement already satisfied: six in c:\python\python38\lib\site-packages (from postal) (1.15.0)
    Skipping wheel build for postal, due to binaries being disabled for it.
    Installing collected packages: postal
        Running setup.py install for postal ... error
        ERROR: Command errored out with exit status 1:
         command: 'c:\python\python38\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-4klo4p99\\postal_06125b08afc047ef85e8b369484922b1\\setup.py'"'"'; __file__='"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-4klo4p99\\postal_06125b08afc047ef85e8b369484922b1\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' build_ext '-IC:\msys64\home\john\libpostal\headers' '-LC:\msys64\home\john\libpostal' install --record 'C:\Users\john\AppData\Local\Temp\pip-record-zhadecb3\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python\python38\Include\postal'
             cwd: C:\Users\john\AppData\Local\Temp\pip-install-4klo4p99\postal_06125b08afc047ef85e8b369484922b1\
        Complete output (12 lines):
        WARNING: The wheel package is not available.
        running build_ext
        building 'postal._expand' extension
        creating build
        creating build\temp.win-amd64-3.8
        creating build\temp.win-amd64-3.8\Release
        creating build\temp.win-amd64-3.8\Release\postal
        C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I/usr/local/include -IC:\msys64\home\john\libpostal\headers -Ic:\python\python38\include -Ic:\python\python38\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\winrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\cppwinrt" /Tcpostal/pyexpand.c /Fobuild\temp.win-amd64-3.8\Release\postal/pyexpand.obj -std=c99
        clÿ: Ligne de commande warning D9002ÿ: option '-std=c99' inconnue ignor‚e
        pyexpand.c
        postal/pyexpand.c(2): fatal error C1083: Impossible d'ouvrir le fichier includeÿ: 'libpostal/libpostal.h'ÿ: No such file or directory
        error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30037\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
        ----------------------------------------
    ERROR: Command errored out with exit status 1: 'c:\python\python38\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-4klo4p99\\postal_06125b08afc047ef85e8b369484922b1\\setup.py'"'"'; __file__='"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-4klo4p99\\postal_06125b08afc047ef85e8b369484922b1\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' build_ext '-IC:\msys64\home\john\libpostal\headers' '-LC:\msys64\home\john\libpostal' install --record 'C:\Users\john\AppData\Local\Temp\pip-record-zhadecb3\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python\python38\Include\postal' Check the logs for full command output.
    WARNING: You are using pip version 21.2.2; however, version 21.2.3 is available.
    You should consider upgrading via the 'c:\python\python38\python.exe -m pip install --upgrade pip' command.

    Décidément, ça ne veut toujours pas s'installer.

  6. #26
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 006
    Points : 9 400
    Points
    9 400
    Par défaut
    oops je me suis mal exprimé c'est libpostal\libpostal.h qu'il faut mettre dans le dossier include

    Nom : libpostal_h.PNG
Affichages : 142
Taille : 7,6 Ko

    mai si tu n'arrives pas à faire la dernière partie (après la fabrication de la dll) ce n'est pas grave tu peux utiliser alors mon .whl (voir un de mes messages précédents).

  7. #27
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2015
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    oops je me suis mal exprimé c'est libpostal\libpostal.h qu'il faut mettre dans le dossier include

    Nom : libpostal_h.PNG
Affichages : 142
Taille : 7,6 Ko

    mai si tu n'arrives pas à faire la dernière partie (après la fabrication de la dll) ce n'est pas grave tu peux utiliser alors mon .whl (voir un de mes messages précédents).
    Je reviens aux nouvelles concernant l'installation de cette librairie.

    Bonnes nouvelles, j'ai réussi l'installation de la librairie, il fallait bien copier l'ensemble du dossier contenant le fichier libpostal.h. C'est super que l'installation a marché et que je n'ai plus cet horrible message d'erreur rouge dans la console.

    Ensuite j'ai copié le fichier libpostal-1.dll que j'ai renommé en postal.ddl comme ci-dessous.

    Nom : postal_ddl.PNG
Affichages : 104
Taille : 48,4 Ko



    Malheureusement je n'ai pas réussi à utiliser la librairie , j'ai le message d'erreur suivant. En tout cas on a avancé sur le sujet de l'installation et je te remercie énormément pour ton aide.

    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
     
     
    from postal.parser import parse_address
     
    print(parse_address("Les Vignes d'en Grach, Route de Graulhet"))
     
     
    ImportError                               Traceback (most recent call last)
    <ipython-input-5-9bb27d7f1a64> in <module>
    ----> 1 from postal.parser import parse_address
          2 
          3 print(parse_address("Les Vignes d'en Grach, Route de Graulhet"))
     
    c:\python\python38\lib\site-packages\postal\parser.py in <module>
          1 """Python bindings to libpostal parse_address."""
    ----> 2 from postal import _parser
          3 from postal.utils.encoding import safe_decode
          4 
          5 
     
    ImportError: DLL load failed while importing _parser: Le module spécifié est introuvable.

  8. #28
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 006
    Points : 9 400
    Points
    9 400
    Par défaut
    hello,
    regarde bien mon message d'installation initial : le nouveau nom pour la dll c'est libpostal.dll pas postal.dll


    ​Ami calmant, J.P

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/07/2003, 12h22
  2. Réponses: 5
    Dernier message: 25/03/2003, 17h27
  3. commande dos pour résoudre une adresse ip
    Par stephy dans le forum Développement
    Réponses: 2
    Dernier message: 17/12/2002, 14h04
  4. [langage] Continuer a parser une ligne
    Par D[r]eadLock dans le forum Langage
    Réponses: 5
    Dernier message: 30/09/2002, 18h49
  5. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26

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