Peter Otten wrote:

> Peter Otten wrote:
> 
>> Gnarlodious wrote:
>> 
>>> On Nov 3, 2:51 am, Peter Otten wrote:
>>> 
>>>> Slightly generalized: have the importing module print its __name__.
>>>> There has to be at least one dot in the name for
>>>>
>>>> from .. import whatever
>>>>
>>>> to succeed.
>>> 
>>> Just spent about 3 hours trying every permutation I could think of,
>>> and searching Google for exactly how to do it, but all I get is:
>>> 
>>> ValueError: Attempted relative import in non-package
>>> 
>>> How do I import a module so that a dot will appear in its name?
>> 
>> Make sure the no path in sys.path leads into a directory that contains an
>> __init__.py. In particular, ensure that you aren't invoking the python
>> interpreter from a working directory that contains an __init__.py and
>> that the main script is in a directory that doesn't contain an
>> __init__.py.
>> 
>> Peter
> 
> Here's a working example that you can use as a starting point:
> 
> $ tree
> .
> |-- alpha
> |   |-- __init__.py
> |   |-- beta
> |   |   |-- __init__.py
> |   |   `-- one.py
> |   `-- two.py
> `-- main.py
> 
> 2 directories, 5 files
> $ cat main.py
> import alpha.beta.one
> $ cat alpha/beta/one.py
> from ..alpha import two
> $ cat alpha/two.py
> print "success!"
> $ python main.py
> success!

Hmm, now I'm puzzled myself. 

> $ cat alpha/beta/one.py
> from ..alpha import two

That line should have been

from .. import two

For some reason (bug?) it seems to work with and without the extra alpha.

Peter
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to