My python interpreter became mad !

John Machin sjmachin at lexicon.net
Tue Mar 25 16:47:06 EDT 2008


Furkan Kuru top-posted:
> Most probably X-Spam added itself to your path.

What is "X-Spam"? Added itself to Benjamin's path [not mine] in such a 
fashion that it is invoked when one does "import re"?

> you should look at your PATH and PYTHONPATH environment variables.

Most *IM*probably. Read the traceback:
"""
 >      >    File "/etc/postfix/re.py", line 19, in ?
 >      >      m = re.match('(Spam)', mail)
 >      > AttributeError: 'module' object has no attribute 'match'
"""

This is a classic case of a script (which does not guard against side 
effects (like spewing out gibberish) when imported instead of being 
executed) being given the same name as a Python-included module and 
being executed in the current directory and hence ends up importing itself.

> 
> On Tue, Mar 25, 2008 at 1:40 PM, John Machin <sjmachin at lexicon.net 
> <mailto:sjmachin at lexicon.net>> wrote:
> 
>     On Mar 25, 10:05 pm, Benjamin Watine <wat... at cines.fr
>     <mailto:wat... at cines.fr>> wrote:
>      > Yes, my python interpreter seems to became mad ; or may be it's
>     me ! :)
>      >
>      > I'm trying to use re module to match text with regular
>     expression. In a
>      > first time, all works right. But since yesterday, I have a very
>     strange
>      > behaviour :
>      >
>      > $ python2.4
>      > Python 2.4.4 (#2, Apr  5 2007, 20:11:18)
>      > [GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
>      > Type "help", "copyright", "credits" or "license" for more
>     information.
>      >  >>> import re
>      > X-Spam-Flag: YES

[snip]

>      > Traceback (most recent call last):
>      >    File "<stdin>", line 1, in ?
>      >    File "/etc/postfix/re.py", line 19, in ?
>      >      m = re.match('(Spam)', mail)
>      > AttributeError: 'module' object has no attribute 'match'
>      >  >>>
>      >
>      > What's the hell ?? I'm just importing the re module.
> 
>     No you're not importing *the* re module. You're importing *an* re
>     module, the first one that is found. In this case: your own re.py.
>     Rename it.
> 




More information about the Python-list mailing list