I'm trying to import a sub-module programmatically. My file tree looks like this:
oopsd/__init__.py
oopsd/oopsd.py
oopsd/driver/__init__.py
oopsd/driver/optiups.py
The optiups.py simply prints "Hello World".
The oopsd.py looks like this:
import importlib
importlib.import_module('oopsd.driver.optiups')
Now with this, I'm getting this exception:
Traceback (most recent call last):
File "<frozen importlib._bootstrap>", line 1521, in _find_and_load_unlocked
AttributeError: 'module' object has no attribute '__path__'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "oopsd/oopsd.py", line 29, in <module>
sys.exit(main())
File "oopsd/oopsd.py", line 23, in main
loaddriver()
File "oopsd/oopsd.py", line 26, in loaddriver
importlib.import_module('oopsd.driver.optiups')
File "/usr/lib/python3.3/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1586, in _gcd_import
File "<frozen importlib._bootstrap>", line 1567, in _find_and_load
File "<frozen importlib._bootstrap>", line 1514, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 313, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1586, in _gcd_import
File "<frozen importlib._bootstrap>", line 1567, in _find_and_load
File "<frozen importlib._bootstrap>", line 1524, in _find_and_load_unlocked
ImportError: No module named 'oopsd.driver'; oopsd is not a package
Does __path__ even still exist in Python 3?
I also tried importing .driver.optiups instead, but this yields:
TypeError: relative imports require the 'package' argument
__package__ seems unset, so I'm lost.
How do I do this the right way?
oopsdmodule, andoopsd.pyfile. Just tryimportlib.import_module('.driver.optiups')drivers, in your codedriver- could that be the problem?ImportError: No module named 'oopsd'