squeeze and package imports

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mathias Waack

    squeeze and package imports

    Hi,

    I've got a problem with Fredrik's squeeze tool. I've got a script
    which accesses a Oracle DB with the help of DCOracle. This script
    works very well, but after squeezing it the "import DCOracle" fails.
    The DCOracle package consists of several python files and some
    shared libs. The import of one shared lib from within the package
    fails. It looks like a problem with the code responsible for
    searching the appropriate module file.

    Let me try to illustrate the situation. DCOracle ist installed under
    /tmp for example:

    /tmp
    +--- DCOracle
    +----- odb.py
    +----- Buffer.sl
    +----- __init__.py
    ...

    __init__.py imports odb.py which imports Buffer.sl, that means in
    odb.py you can find statements like
    from Buffer import Buffer

    If I import it from my script:

    sys.path.append ("/tmp")
    import DCOracle

    it works without squeezing and fails with squeezing. In the latter
    case, the Buffer import statement named above fails. The traceback
    shows, which import in which file is executed, but instead of the
    directory names of each file it prints only question marks "?". Thus
    I thought, if the import code doesn't know about the current
    directory, it can't import the Buffer module, because it can't look
    into the "same" directory. And so my second try:

    sys.path.append ("/tmp")
    sys.path.append ("/tmp/DCOracle")
    import DCOracle

    And everything works fine. But I'm still curious - there seems to be
    something wrong with the import hooks in the squeeze module. BTW,
    I'm using python 2.2.2.

    Any ideas?

    Mathias
  • Fredrik Lundh

    #2
    Re: squeeze and package imports

    Mathias Waack wrote:
    [color=blue]
    > it works without squeezing and fails with squeezing. In the latter
    > case, the Buffer import statement named above fails. The traceback
    > shows, which import in which file is executed, but instead of the
    > directory names of each file it prints only question marks "?". Thus
    > I thought, if the import code doesn't know about the current
    > directory, it can't import the Buffer module, because it can't look
    > into the "same" directory. And so my second try:
    >
    > sys.path.append ("/tmp")
    > sys.path.append ("/tmp/DCOracle")
    > import DCOracle
    >
    > And everything works fine. But I'm still curious - there seems to be
    > something wrong with the import hooks in the squeeze module. BTW,
    > I'm using python 2.2.2.[/color]

    Python didn't have packages back in the early days when squeeze
    was written (Python 1.3 or so); afaik, nobody's ever gotten around
    to add true package support to the tool.

    for a modern replacement, see:



    </F>




    Comment

    • Mathias Waack

      #3
      Re: squeeze and package imports

      Fredrik Lundh wrote:
      [color=blue]
      > for a modern replacement, see:
      >
      > http://www.mcmillan-inc.com/install1.html[/color]

      Thanks for the link. I'll give it a try.

      Mathias

      Comment

      Working...