Python, c_parser.py ?

c_parser ?

Asensin tuon c_parser.py, ja sitä ennen myös

http://www.dabeaz.com/ply/

sekä

http://code.google.com/p/pycparser/

mutta: yritettäessä komentaa (komentoriviltä)

python c_parser.py koodia.c

tulee virheilmoitus:

Traceback (most recent call last):
File "c_parser.py", line 13, in
from . import c_ast
ValueError: Attempted relative import in non-package


sama tulee myös komennolla:

python c_parser.py

eli c-kielisen tiedostonimen poisjättö ei muuta asiaa.

saako tuon jotenkin korjattua ?

Python on versiota 3.2.3 (windows XP; 32-bit)

3

152

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • hooposs

      Mielenkiintoista. En tiennyt koko relative importtien olemassaolosta kun en ole moisia tähän asti tarvinnut :). Elikkä ilmeisesti main moduulit (suorita vs importtaa moduuli) ja relative importit eivät tällä hetkellä sovi hyvin yhteen.

      Jotain asiaan liittyen tai vierestä lipoen
      http://www.python.org/dev/peps/pep-0328/#rationale-for-relative-imports
      http://www.python.org/dev/peps/pep-0338/#import-statements-and-the-main-module
      http://python.org/dev/peps/pep-0366/

      Toimivatko esimerkit examples kansiossa kuitenkin? eli jos tuo on tosiaan ongelma vain yrittäessä ajaa moduulia joka tekee relative importit niin ei sillä pitäisi olla mitään käytännön merkitystä

    • c_parser

      "niin ei sillä pitäisi olla mitään käytännön merkitystä"

      no onhan sillä nyt erittäin vakava merkitys !

      Kun siis tuon seurauksena en pysty ollenkaan tekemään haluaamaani asiaa.

      Tuo c_parser.py kun on tuon seurauksena täysin käyttökelvoton.

      En ainakaan keksi mitään keinoa edes ajaa manuaalisesti tuota c_parser.py

      ja kun tarkoitus oli luoda DLL joka ajaisi sekä python -tulkin että tuon c_parser.py ko. python -tulkissa ja mahdollistaisi tuon DLL:n kutsumisen ihan millä kielellä tehdystä pääohjelmasta tahansa (siis niistä kielistä, joita voi kääntää EXE:ksi)

      • hooposss

        Tuo c_parser.py sisältää luokan CParser eikä mitään oleellista suoritettavaa. Voit käyttää ko. luokkaa ilman mitään ongelmia kunhan olet asentanut sen ja ply:n oikein (python setup.py install). Tällöin python löytää sen ihan oikein komennolla import pycparser. Examples kansiossa olevat esimerkit toimivat omalla koneellani ihan hyvin tosin (eri python mutta ei pitäisi olla merkitystä. Sama virhe tulee jos koitan suorittaa ko. tiedoston)

        Ilmankin oikeaoppista asennusta sen saa varmasti toimimaan, kunhan huolehdit että pycparser paketti löytyy jotta import sen osaa hakea.
        Vaihtoehdot:
        a) asennat sen oikeaoppisesti site-packages kansioon
        b) Luot sille .pth tiedoston site-package kansioon, joka kertoo mistä hakea (http://docs.python.org/library/site.html)
        c) määrittelet polun PYTHONPATH ympäristömuuttujaan
        d) muokkaat sys.path ennen importtia ja lisäät polun sinne
        (muitakin tapoja voi olla mutta ei tule mieleen just nyt)

        "En ainakaan keksi mitään keinoa edes ajaa manuaalisesti tuota c_parser.py"
        Ei sitä ole tarkoitettukaan. Ongelma ilmenee vain ja ainoastaan jos koitat suorittaa ko. tiedoston. Tiedosto on osa pakettia pycparser (__init__py olemassaolo kertoo tämän). En tiedä miksi tekijä on päättänyt käyttää suhteellisia importteja josta johtuen tuo ongelma nyt ilmenee.
        Jotain paketeista: http://docs.python.org/tutorial/modules.html#packages

        Jos mikään muu ei auta voit kiertää ongelman muuttamalla importit tavallisiksi, kunhan huolehdit että ne löytyvät importilla. Tätä joudut sitten mahdollisesti ylläpitämään itse jatkossakin :)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. En minä kyllä enää odota sinua

      Olet siellä sen harmaan kanssa. Niin, annoit minun nähdä lämpimät tunteesi siitä huolimatta. Se merkitsi kyllä paljon. O
      Ikävä
      40
      2022
    2. Taas pedofiliatuomio Haapaveelle

      Vastenmielisiä ja vakavia rikostapauksia pikkupaikkakunnan alueellekin näyttää riittävän. Tämän alan rikoksien tuomiot
      Haapavesi
      41
      1727
    3. Jos joku luulee että kaikki käy

      Sanon vain tämän. Minun kanssani ei neuvotella. Minun kanssani eletään tasavertaisesti. Jos se on liikaa, niin ovi rinn
      Ikävä
      61
      1525
    4. Joka kolmas työtön on työkyvytön

      Viime vuonna työnhakuvelvoitteen ulkopuolella oli noin kolmannes työttömistä työnhakijoista. Huhheijaa, mihin suomalais
      Maailman menoa
      181
      1436
    5. Sakin hivutus - ilmiö

      Miten tuollainen tuollainen ilmiö kuin ”sakin hivutus” syntyy? Mitä syitä ilmiön syntymiseen tarvitaan? Onko sakissa jok
      80 plus
      68
      1239
    6. Ei ole rohkeutta tulla jututtamaan

      Voidaan me nähdä ja tervehtiä, sitäkin harvoin, mutta iso kynnys on edes mennä lähelle ja kysyä kuulumisia. Ymmärrät var
      Tunteet
      8
      1231
    7. Julkinen saunatilanne Haapavedellä, tämä on täyttä paskaa!

      Eilen Haapaveden uimahallin saunassa koettu tilanne oli täysin käsittämätöntä ja helvetin järkyttävää. Ladyboy harjoitti
      Haapavesi
      19
      973
    8. Mitä tapahtuu?

      Mitä säpäkän risteyksessä on tapahtunut kun poliiseja, ambulansseja ja kopteri paikalla?
      Outokumpu
      17
      933
    9. Me ei voida olla yhdessä

      Järki päähän ja realiteetit huomioon ottaen.
      Ikävä
      63
      924
    10. Kuhmon K-kaupan vanhenevat hapannaamat kassoilla

      Pitemmän aikaa olen ihmetellyt kaverin kanssa miksi Kuhmon K-kaupassa on aina tympeimmät kassattöntekijät? Kesällä tulee
      Kuhmo
      14
      865
    Aihe