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 *
When importing my module I get this error:
>>> import code_parsing
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "K:CODEpythonlibcode_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__.pystructure work fine. ada.pyis a pure python file, no special compiled/cython/.pyd stuff.
Any ideas?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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 a code_parsing.ada module instead so the following will work:
from code_parsing.ada import *
or use an explicit ‘local package’ reference:
from .ada import *
You can force the same behaviour in Python 2 with:
from __future__ import absolute_import
See PEP 328 – Imports: Multi-Line and Absolute/Relative for details.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0