Py3: Import relative path module
Peter Otten
__peter__ at web.de
Wed Nov 3 09:50:45 EDT 2010
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!
Peter
More information about the Python-list
mailing list