[PyQt] Eric3 issue: importing modules with the same name as an Eric module

Sundance sundance at ierne.eu.org
Wed Sep 26 09:20:04 BST 2007


Detlev Offenbach wrote:

> That is strange. eric puts the path of the executable at sys.path[0]
> just before it's own path. Can you check sys.path in your main
> routine or just before the failing import?

Hi Detlev,

Thank you for your reply!

I did check sys.path just before the failing import. This being said, I 
don't think sys.path is used at all here, as you will see below.

Anyway, here's how to reproduce the bug: create these two files:

---[ test.py ]---------------------------------------------------------
import sys
print "Path:"
print sys.path

import Config
print "Config file:"
print Config.__file__
-----------------------------------------------------------------------

---[ Config.py ]-------------------------------------------------------
print "I am the Config.py file!"
-----------------------------------------------------------------------

... and run test.py from Eric.

The output will be something like this:

---[ (output) ]--------------------------------------------------------
Path:
['/home/me', '/usr/share/eric/modules/DebugClients/Python', '/usr/share/eric/modules', ...]
Config file:
/usr/share/eric/modules/DebugClients/Python/Config.pyc
-----------------------------------------------------------------------

As you can see, the sys.path is correct, but the wrong Config module is 
imported.

What is happening here is, I think, that the Python interpreter instance 
which Eric starts in order to run my program, isn't 'clean': it imports 
its own Config module BEFORE even running my code, and thus, when my 
code tries to 'import Config', that Python interpreter goes, "Oh, but I 
already have a Config module loaded, so I'll just return a reference to 
that one".

Am I correct in my assumption that the Python interpreter instance loads 
its own Config module before running my code? Or is it a bug?

Thanks,

-- S.


More information about the PyQt mailing list