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

164

    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. 6 kW saunan lämmityksestä kohta 10 euron lisämaksu / kerta

      Kokoomuslainen sähköyhtiöiden hallitsema Energiavirasto ehdottaa 5 kW:n rajaa, jonka ylittämisestä tulee lisämaksu. Tark
      Maailman menoa
      289
      8314
    2. Duunarit hylkäsivät vasemmistoliiton, siitä tuli feministinaisten puolue

      Pääluottamusmies Jari Myllykoski liittyi vasemmistoliittoon, koska se oli duunarien puolue. Sitä samaa puoluetta ei enää
      Maailman menoa
      194
      4517
    3. Olen väsynyt tähän

      En osaa lopettaa ja koen huonoa omaatuntoa tästä. Kaikki on muutenkin turhaa ja tekemisesi sattuvat. Tunteita on vain hy
      Ikävä
      30
      2747
    4. Oppiiko vasemmistolaiset valehtelun jo kotonaan?

      Sillä vasemmistolaiset/äärivasemmistolaiset valehtelee ja keksii asioita omasta päästään todella paljon. Esim. joku vas
      Maailman menoa
      190
      2563
    5. Seuraava hallituspohja - Kokoomus, kepu, persut + KD

      Kokoomus saa ainakin 20% kannatuksen ensi vaaleissa, keskusta sanoisin noin 15%, persut todennäköisesti enemmän, ehkä 17
      Maailman menoa
      109
      2166
    6. Olenko mies sinun mielestä outo?

      Saat vastata rehellisesti.
      Ikävä
      51
      1696
    7. Millasia unelmia sulla on?

      onko unelmia...?
      Ikävä
      58
      1658
    8. Maailman laiskin eläin: persu

      Persu ei ole eläessään laittanut rikkaa ristiin itsensä elättämiseen. Luonnossa tuollainen ei olisi mahdollista, mutta s
      Maailman menoa
      22
      1553
    9. Minneapolisin tapauksesta hyvä video

      Runoilijan auto oli poikittain tiellä ja kun poliisit lähestyivät sitä, runotyttö painoi reippaadti kaasua. Auto syöksäh
      Maailman menoa
      343
      1303
    10. Miten usein toivot

      Tai olet toivonut että olisimme lähekkäin vai toivotko ollenkaan?
      Ikävä
      168
      1298
    Aihe