[Tutor] Relative import help
Peter Otten
__peter__ at web.de
Sat Sep 22 14:25:16 CEST 2012
Matthew Ngaha wrote:
> i have an assignment from a book to practice implementing relative
> imports. it gave a very clear and easy to follow explanation, but my
> results are proving the instructions are wrong. here's what i have
> tried. my folder structure:
>
> Project /
>
> __init__.py
> main.py
> Domestic /
>
> __init__.py
> players.py
> premier_leauge.py
> silverware.py
> Europe /
>
> __init__.py
> champions_league.py
> europa.py
> winners.py
> Internationals /
>
> __init__.py
> nations.py
>
> its easy to use the normal import method to import something further
> down the directory, but when trying to go up, nothing works. heres
> something weird. winner.py in the Europe directory, i used this code
> to try and import a class named Silverware in silverware.py 1
> directory up:
>
> from ..silverware import Silverware
> heres my error mesages: ... ValueError: Attempted relative import in
> non-package
>
> i can accept this and say i did something wrong, but.... i left the
> import statement even with the error. now my main.py in the 1st
> directory called Project. i imported winner.py. the file that got this
> error message. And by importing this file, i have access to
> silverware.py. i can access everything in this file through that old
> import statement:
>
> from ..silverware import Silverware
> so why is it this statement wont allow me to import silverware.py to
> winner.py directly, but still gives access to winner.py if winner.py
> is imported from a directory on the same level or further up from
> silverware.py? this is the exact code instructions my book gave me,
> why isn't it working for files futher down?
You probably have a path that reaches into Domestic or Europe sub-package.
That can happen if e. g. Project/Domestic/Europe is your current working
directory.
Try to cd into the Project folder's parent directory and see if
$ python -c 'import Project.Domestic.Europe.winners'
works.
More information about the Tutor
mailing list