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. #1
    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 Parser une adresse
    Bonjour à tous,

    Je suis à la recherche d'une librairie me permettant de parser automatiquement des adresses postales.

    J'ai vu qu'il existait une librairie qui s'appelle libpostal mais je ne sais pas comment l'utiliser.

    Est-ce que vous pourriez m'indiquer comment faire pour installer et utiliser cette librairie, ou si vous en connaissez une autre qui fait la même chose ?

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    libpostal semble (d'après github) être une librairie pour programmes compilés (C/C++) mais mentionne pyPostal. Une rapide recherche dans un moteur de recherche à partir de cet indice m'a amené sur pyPostal mais qui date de 2010 (donc pour Python3 c'est peau d'zob)
    Mais puisque cette librairie existe, je me suis dit que le sujet devait être connu. Donc j'ai bêtement tapé "python parser adresse postale" dans un moteur de recherche (chose qui me semble être faisable à ton niveau) et je suis arrivé sur address-parser qui date de 2019. Il y a des exemples d'utilisation

    Pour installer tu télécharges le source (.tar.gz) que tu décompresses dans un dossier. Ensuite généralement la procédure est toujours la même
    • python3 setup.py build
    • python3 setup.py install
    (il doit y avoir un fichier ReadMe ou un INSTALL qui l'explique).

    Si tu veux installer via le réseau alors tu tapes simplement pip3 install address-parser (fonctionne aussi avec un fichier ".whl" téléchargeable si présent)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    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
    Bonjour Sve@r,

    Merci beaucoup pour ta réponse.

    J'ai essayé d'utiliser la librairie addresse-parser mais je crois que je n'obtiens pas le résultat souhaité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    from address_parser import Parser
     
     
    adr = Parser().parse('12 rue des Etoiles, 13009 Marseille')
    print(adr)
     
    12 Rue Des Etoiles, Marseille 13009
    J'aurais souhaité obtenir une séparation complète des champs (Numéro de voie, voie, Ville, CP...).
    Ici j'ai l'impression que la séparation se fait uniquement parce qu'il y a une virgule.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par frutz Voir le message
    J'aurais souhaité obtenir une séparation complète des champs (Numéro de voie, voie, Ville, CP...).
    Le print(adr) affiche l'adresse complète sans découpage. Mais on peut accèder aux attributs d'adr:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> adr.number.number
    12
    ou les récupérer via adr.dict.


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

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frutz Voir le message
    Ici j'ai l'impression que la séparation se fait uniquement parce qu'il y a une virgule.
    Ben ça se vérifie !!!
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> adr = Parser().parse('12 rue des Etoiles 13009 Marseille')
    >>> print(adr)

    Ensuite tu peux regarder type(adr), help(adr), dir(adr). Par exemple avec "dir()" je vois qu'il existe une méthode "args" donc je tente print(adr.args) et là j'ai des trucs qui apparaissent. Et enfin je vois qu'il y a une homepage donc je vais voir ce qui s'y raconte. Découvrir une nouvelle lib ça ne se fait pas en 3mn (moi ça fait 1 mois que je tente de comprendre pyqtgraph)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    il y a aussi le module fraddress (disponible chez Pypi) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import fraddress
    print(fraddress.parse('12 rue des Etoiles, 13009 Marseille'))
    donne comme résultat :
    [('12', 'AddressNumber'), ('rue', 'StreetType'), ('des', 'StreetLink'), ('Etoiles,', 'StreetName'), ('13009', 'Zipcode'), ('Marseille', 'City')]
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    il y a aussi le module fraddress (disponible chez Pypi) :
    Effectivement, à première vue il semble plus sympa que adress_parser. C'est le petit inconvénient des libairies externes, on ne sait jamais laquelle choisir....
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Sve@r Voir le message
    C'est le petit inconvénient des libairies externes, on ne sait jamais laquelle choisir....
    On définit un jeu d'adresses significatives et on regarde laquelle donne les meilleurs/résultats.

    A résultats équivalents, on penchera peut être vers celle qui sera la plus simple à utiliser ou la plus performante/mature/populaire.

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

  9. #9
    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
    Merci beaucoup pour toutes vos contributions.

    C'est justement mon objectif d'utiliser la librairie qui me permettra d'obtenir le meilleur résultat.


    J'aimerais beaucoup essayer celle qui demande d'installer la librairie C libpostal, car elle est construite sur une multitude d'adresses.

    Sauf que j'ai du mal à suivre les instructions pour installer cette librairie. J'ai d'abord installer Visual studio pour avoir le langage C sur mon PC.
    Ensuite j'ai installé MSYS2 et exécuté quelques commandes sans savoir ce que je fais.

    Voici ce que j'obtiens à la fin de l'exécution de la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: you should use --build, --host, --target
    configure: WARNING: invalid host type: space...]
    configure: error: expected an absolute directory name for --datadir: [...some
    make: *** No targets specified and no makefile found.  Stop.
    bash: sudo: command not found


    J'avais copié le code qui se trouve dans l'explication du Github :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    git clone https://github.com/openvenues/libpostal
    cd libpostal
    ./bootstrap.sh
    ./configure --datadir=[...some dir with a few GB of space...]
    make
    sudo make install
    Si vous pouvez m'aider à utiliser cette libraire pypostal (différente de pyPostal mentionné par Sve@r), je vous en serait très reconnaissant.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    pour l'option --datadir sous windows il faut mettre un chemin du style /d pour par exemple d:\

    ./configure --datadir=/d
    Le répertoire d'installation est alors en d:\libpostal

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  11. #11
    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,
    pour l'option --datadir sous windows il faut mettre un chemin du style /d pour par exemple d:\

    Le répertoire d'installation est alors en d:\libpostal

    Ami calmant, J.P
    Bonjour @jurassic pork


    Effectivement je n'avais pas spécifié le répertoire de mon pc. L'installation (la librairie C libpostal) s'est bien effectuée, j'ai un dossier sur mon PC.

    Par contre lorsque je tente d'installer la librairie python (pypostal)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pip install pypostal
    J'ai ce long 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    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-0g88jmxb\\postal_d7ac59296f7a439eaf25b4ec38237aa4\\setup.py'"'"'; __file__='"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-0g88jmxb\\postal_d7ac59296f7a439eaf25b4ec38237aa4\\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'"'"'))' install --record 'C:\Users\john\AppData\Local\Temp\pip-record-mp4adlfi\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python\python38\Include\postal'
             cwd: C:\Users\john\AppData\Local\Temp\pip-install-0g88jmxb\postal_d7ac59296f7a439eaf25b4ec38237aa4\
        Complete output (36 lines):
        WARNING: The wheel package is not available.
        running install
        running build
        running build_py
        creating build
        creating build\lib.win-amd64-3.8
        creating build\lib.win-amd64-3.8\postal
        copying postal\dedupe.py -> build\lib.win-amd64-3.8\postal
        copying postal\expand.py -> build\lib.win-amd64-3.8\postal
        copying postal\near_dupe.py -> build\lib.win-amd64-3.8\postal
        copying postal\normalize.py -> build\lib.win-amd64-3.8\postal
        copying postal\parser.py -> build\lib.win-amd64-3.8\postal
        copying postal\tokenize.py -> build\lib.win-amd64-3.8\postal
        copying postal\token_types.py -> build\lib.win-amd64-3.8\postal
        copying postal\__init__.py -> build\lib.win-amd64-3.8\postal
        creating build\lib.win-amd64-3.8\postal\tests
        copying postal\tests\test_expand.py -> build\lib.win-amd64-3.8\postal\tests
        copying postal\tests\test_parser.py -> build\lib.win-amd64-3.8\postal\tests
        copying postal\tests\_test_near_dupes.py -> build\lib.win-amd64-3.8\postal\tests
        copying postal\tests\__init__.py -> build\lib.win-amd64-3.8\postal\tests
        creating build\lib.win-amd64-3.8\postal\utils
        copying postal\utils\encoding.py -> build\lib.win-amd64-3.8\postal\utils
        copying postal\utils\enum.py -> build\lib.win-amd64-3.8\postal\utils
        copying postal\utils\omitted.py -> build\lib.win-amd64-3.8\postal\utils
        copying postal\utils\__init__.py -> build\lib.win-amd64-3.8\postal\utils
        copying postal\pyutils.h -> build\lib.win-amd64-3.8\postal
        running build_ext
        building 'postal._expand' extension
        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:\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" /Tcpostal/pyexpand.c /Fobuild\temp.win-amd64-3.8\Release\postal/pyexpand.obj -std=c99
        clÿ: warning D9002ÿ: option '-std=c99' inconnue ignor‚e
        pyexpand.c
        postal/pyexpand.c(2): fatal error C1083: '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-0g88jmxb\\postal_d7ac59296f7a439eaf25b4ec38237aa4\\setup.py'"'"'; __file__='"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-0g88jmxb\\postal_d7ac59296f7a439eaf25b4ec38237aa4\\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'"'"'))' install --record 'C:\Users\john\AppData\Local\Temp\pip-record-mp4adlfi\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python\python38\Include\postal' Check the logs for full command output.
    Merci pour votre aide

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    l'erreur est ici :
    postal/pyexpand.c(2): fatal error C1083: 'libpostal/libpostal.h'ÿ: No such file or directory
    le compilateur C ne trouve pas le chemin des sources de libpostal et là je ne peux pas t'aider pour te dire comment résoudre ce problème
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  13. #13
    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
    l'erreur est ici :


    le compilateur C ne trouve pas le chemin des sources de libpostal et là je ne peux pas t'aider pour te dire comment résoudre ce problème
    Merci beaucoup de ton aide, et merci à tous également.

    J'ai l'impression que cette librairie pose problème, rien qu'a voir ce qu'il faut faire pour l'installation.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    elle est beaucoup plus facile à installer sous linux.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    finalement j'ai trouvé comment installer le module python libpostal sous windows. Mais libpostal c'est une vraie usine à gaz. Le répertoire de données fait plus d ' 1,8 Gigaoctets

    Voici la méthode d'installation ( c'est en angliche ) :
    **Installing libpostal on Windows**

    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).


    Then:
    ```
    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=[...some dir with a few GB of space...]
    make
    make install
    mkdir headers && cp -r /usr/include/libpostal/ headers/
    ```
    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


    Now start a command prompt which has access to the Microsoft toolchain. This can be done by e.g. installing the [Windows 10 SDK](https://developer.microsoft.com/en-u...windows-10-sdk) and then running the ``x64 Native Tools Command Prompt``.


    Assuming your MSYS and Python are installed in some standard locations, you can use this command prompt to build+install the Python library like so:
    ```


    lib.exe /def:libpostal.def /out:postal.lib /machine64 (libpostal.def is in the folder of libpostal)
    (ex: D:\Dev\msys64\home\user\libpostal>lib.exe /def:libpostal.def /out:postal.lib /machine64)
    pip install postal --global-option=build_ext --global-option="-I[...libpostal checkout...]\headers" --global-option="-L[...libpostal checkout...]"
    D:\Dev\msys64\home\user\libpostal>copy src\.libs\libpostal-1.dll D:\Dev\Python\eric_env\Lib\site-packages\postal\libpostal.dll
    et voici le résultat dans eric6 sous windows :

    Nom : libpostalPythonWindows.PNG
Affichages : 1234
Taille : 28,8 Ko

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  16. #16
    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 j'ai trouvé comment installer le module python libpostal sous windows. Mais libpostal c'est une vraie usine à gaz. Le répertoire de données fait plus d ' 1,8 Gigaoctets

    Voici la méthode d'installation ( c'est en angliche ) :


    et voici le résultat dans eric6 sous windows :

    Nom : libpostalPythonWindows.PNG
Affichages : 1234
Taille : 28,8 Ko

    Ami calmant, J.P

    C'est une bonne nouvelle que tu as réussi à installer sur Windows.

    Donc si je comprends bien, il me manque la dernière étape où il faut exécuter les commandes en lançant l'outil X64 Native Tools Command Prompt.

    J'ai donc essayer d'exécuter les commandes mais l'installation pose toujours problème. Voici ce que j'ai exécuté comme commande.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C:\msys64\home\john\libpostal>lib.exe /def:libpostal.def /out:postal.lib /machine:x64
    Microsoft (R) Library Manager Version 14.29.30040.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
     
       Création de la bibliothèque postal.lib et de l'objet postal.exp
    Ensuite l'installation de la librairie :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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"
    Et voici ce que j'obtiens :



    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
     
    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-_eh4vmaf\\postal_a20a7862cd1641bfaaad6d0a837c8954\\setup.py'"'"'; __file__='"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-_eh4vmaf\\postal_a20a7862cd1641bfaaad6d0a837c8954\\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-kwykl719\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python\python38\Include\postal'
             cwd: C:\Users\john\AppData\Local\Temp\pip-install-_eh4vmaf\postal_a20a7862cd1641bfaaad6d0a837c8954\
        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-_eh4vmaf\\postal_a20a7862cd1641bfaaad6d0a837c8954\\setup.py'"'"'; __file__='"'"'C:\\Users\\john\\AppData\\Local\\Temp\\pip-install-_eh4vmaf\\postal_a20a7862cd1641bfaaad6d0a837c8954\\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-kwykl719\install-record.txt' --single-version-externally-managed --compile --install-headers 'c:\python\python38\Include\postal' Check the logs for full command output.


    Je sais pas si ça vient du fait que j'ai mal renseigné les répertoires, je suis pas du tout un pro avec les lignes de commandes, ou alors il me manque des fichiers.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    hello,
    as-tu exécuté ces étapes là ? :
    mkdir headers && cp -r /usr/include/libpostal/ headers/
    ```
    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
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  18. #18
    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,
    as-tu exécuté ces étapes là ? :


    Ami calmant, J.P

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mkdir headers && cp -r /usr/include/libpostal/ headers/
    mkdir: cannot create directory ‘headers’: File exists
    Egalement ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mkdir headers && cp -r /usr/include/libpostal.def/ headers/
    mkdir: cannot create directory ‘headers’: File exists
    La partie VS2019
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    C:\msys64\home\john\libpostal>lib.exe /def:libpostal.def /out:postal.lib /machine:x64
    Microsoft (R) Library Manager Version 14.29.30040.0
    Copyright (C) Microsoft Corporation.  All rights reserved.
     
       Création de la bibliothèque postal.lib et de l'objet postal.exp


    Ensuite pour les dernières lignes de code, j'ai un doute sur une commande. Je ne sais pas si je dois modifier un chemin ou juste copier coller le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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"
    ou alors sans le nom de mon répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    pip install postal --global-option=build_ext --global-option="-I[...libpostal checkout...]\headers" --global-option="-L[...libpostal checkout...]"


    L'installation échoue donc je peux pas exécuter le code. J'imagine que pour la suite je devrais adapter le code notamment cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    D:\Dev\Python\eric_env\Lib\site-packages\postal\libpostal.dll
    Je suis vraiment pas doué avec ces installations, et j'ai du mal à comprendre ce que je fais.

    Au final, est-ce que cette librairie va t'elle le coup.

    En tout cas, j'ai essayé l'autre librairie python : adresse_parser mais le résultat n'est pas satisfaisant.


    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
     
    # Importation des librairies
    import pandas as pd
    import phonetics
     
    from address_parser import Parser
     
     
    adr = Parser().parse("Les Vignes d'en Grach, Route de Graulhet, GIROUSSENS, 81500, FR")
    Nom_voie = adr.road.name                    
    Num_voie = adr.number.number
    Code_postal = adr.locality.zip
    Ville = adr.locality.city
     
    print(Nom_voie)
    print(Num_voie)
    print(Code_postal)
    print(Ville)
     
     
     
    Les Vignes D'En Grach
    -1
    81500
    fr
    Le nom de la voie est faux.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    Effectivement avec libpostal ça marche beaucoup mieux mais c'est assez long à se lancer ( certainement à cause du chargement de certaines données du répertoire libpostal qui fait 1,8 Go).
    Résultat :
    [("les vignes d'en grach", 'house'), ('route de graulhet', 'road'), ('giroussens', 'city'), ('81500', 'postcode'), ('fr', 'country')]
    Pour l'installation de libpostal
    1 - Vérifie que tu as bien dans le répertoire headers le répertoire libpostal avec dedans libpostal.h

    La commande :
    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"
    me semble bonne
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  20. #20
    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
    Effectivement avec libpostal ça marche beaucoup mieux mais c'est assez long à se lancer ( certainement à cause du chargement de certaines données du répertoire libpostal qui fait 1,8 Go).
    Résultat :


    Pour l'installation de libpostal
    1 - Vérifie que tu as bien dans le répertoire headers le répertoire libpostal avec dedans libpostal.h

    La commande :

    me semble bonne

    C'est déjà une bonne chose que cette librairie soit plus fiable et reconnaît mieux les adresses.


    Je viens de vérifier le répertoire libpostal qui contient bien le fichier libpostal.h (capture ci-dessous)

    Nom : libpostal.PNG
Affichages : 925
Taille : 8,4 Ko

    J'ai essayé de faire l'installation sur un autre pc, et je n'ai pas réussi. Je dois vraiment m'y prendre mal pour ne pas réussir cette installation.

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