Blitzkoder
Blitzkoder

Reputation: 1838

AttributeError: module '' has no attribute '__path__'

I'm having a problem which I have no idea how to further debug.

I have a project with different purposes, making use of Python 3 among other things. I created a Python package named package. The package's top-directory is located inside myproject/python/. In the filesystem, it has the following structure:

- /home/myuser/myproject/python
--- package/
------ __init__.py
------ myutil.py
------ sub_package/
---------- __init__.py
---------- sub_sub_package/
-------------- __init__.py
-------------- myscript.py

All __init__.py files are blank, with the exception of the root one (package/__init__.py), which has the following contents:

from . import myutil

So far so good. The file myscript.py is actually a Python script to run directly. As it resides inside a package, I am executing it as such:

cd /home/myuser/myproject/python
python -m package.sub_package.sub_sub_package.myscript

Now the weird part. The script works as expected. However, after the program finishes, I get the following message:

/usr/bin/python3: Error while finding module specification for 
'package.sub_package.sub_sub_package.myscript.py'
(AttributeError: module 'package.sub_package.sub_sub_package.myscript' 
has no attribute '__path__')

I have been searching online but to no avail. Can't figure out what is causing this message and how to solve it. I am guessing it is some obscure behavior of Python 3's import handling, but have no clue. Any help is greatly appreciated.

Upvotes: 15

Views: 36881

Answers (2)

Miguel Tomás
Miguel Tomás

Reputation: 1911

Two ways to run a python 3 script with a filename 'fibo.py':

The argument is the name of the .py file.

python fibo.py

The argument is the name of a Python module, without .py

python -m fibo

Upvotes: 10

Landar
Landar

Reputation: 276

you do not have __init__.py file in the last directory sub_sub_package

try adding an empty __init__.py file there

Upvotes: 1

Related Questions