AttributeError: module object has no attribute

Discussion in 'Python' started by Nikhil, May 20, 2008.

  1. Nikhil

    Nikhil Guest

    I have recently written a small module. When I import the module, I
    always get the error


    only when I do

    --
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: 'module' object has no attribute '/xyz/py/file'
    ---


    but when I do the below, I do not get any error.

    ----

    Any ideas on what could be wrong?


    Thanks in advance.

    Nikhil
     
    Nikhil, May 20, 2008
    #1
    1. Advertisements

  2. Nikhil

    Peter Otten Guest

    Are you abusing the __all__ attribute?

    $ cat tmp.py
    __all__ = ['/xyz/py/file']

    $ python -c "from tmp import *"
    Traceback (most recent call last):
    File "<string>", line 1, in <module>
    AttributeError: 'module' object has no attribute '/xyz/py/file'

    Peter
     
    Peter Otten, May 20, 2008
    #2
    1. Advertisements

  3. Nikhil

    Nikhil Guest

    Hi Peter,

    Yes, I am. Is there any reason not to?

    basically, since this is implemented in the module, I have to export it
    since the caller to the function in the module is responsible for
    ensuring he has enough proper permissions to read the file.

    Thanks,
    Nikhil
     
    Nikhil, May 20, 2008
    #3
  4. That your module raises the `AttributeError` and is broke is not reason
    enough!? :)
    What do you mean by "implemented in the module"? `__all__` is for names
    that live in the module's namespace -- '/xyz/py/file' isn't even a legal
    identifier name in Python!

    Ciao,
    Marc 'BlackJack' Rintsch.
     
    Marc 'BlackJack' Rintsch, May 20, 2008
    #4
  5. Nikhil

    Nikhil Guest

    Okay.. thanks :)

    I removed the entry from __all__, and I earlier assumed the module to
    break, but it did not. Thanks again :)
     
    Nikhil, May 20, 2008
    #5
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.