I'm getting an error when importing my code_parsing
package with Python 3.2.
Directory code_parsing
is within PYTHONPATH
and contains the following files (some others too, but irrelvant here)
code_parsing/__init__.py
code_parsing/ada.py
__init__.py
contains:
from ada import *
try:
from c import *
except ImportError:
# can happen if ply.lex is not available
pass
When importing my module I get this error:
>>> import code_parsing
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "K:\CODE\pythonlib\code_parsing\__init__.py", line 1, in <module>
from ada import *
ImportError: No module named ada
With python 2.7 on the same machine with the same environment it works fine.
Some precisions:
- Others import in the same directory using the same
directory/__init__.py
structure work fine. - ada.py is a pure python file, no special compiled/cython/.pyd stuff.
Any ideas?
Python 3 uses absolute imports. Any unqualified name is imported as a top-level module.
You don't have a top-level
ada
module. You have acode_parsing.ada
module instead so the following will work:or use an explicit 'local package' reference:
You can force the same behaviour in Python 2 with:
See PEP 328 – Imports: Multi-Line and Absolute/Relative for details.