squeeze and package imports

M

Mathias Waack

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
 
F

Fredrik Lundh

Mathias said:
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.

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:

http://www.mcmillan-inc.com/install1.html

</F>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,185
Members
46,736
Latest member
AdolphBig6

Latest Threads

Top