[New-bugs-announce] [issue30503] It should be possible to use a module name with the same name as a package name
Håkon Hægland
report at bugs.python.org
Mon May 29 04:22:55 EDT 2017
New submission from Håkon Hægland:
I have the following folder structure:
.
├── aaa
│ ├── bbb
│ │ ├── ccc.py
│ │ └── __init__.py
│ ├── bbb.py
│ └── __init__.py
├── __init__.py
└── t.py
./t.py:
import sys
sys.path = ['.']
import aaa.bbb
print(aaa.bbb.get_name())
./aaa/bbb.py:
def get_name():
return "aaa/bbb"
however, when I run the main script:
$ python -B t.py
Traceback (most recent call last):
File "t.py", line 5, in <module>
print(aaa.bbb.get_name())
AttributeError: module 'aaa.bbb' has no attribute 'get_name'
The reason is that there is also a package with name 'aaa.bbb' (i.e. file "./aaa/bbb/__init__.py") and python will see this package before it sees my module "./aaa/bbb.py" and will never load the module.
If this is correct, than this is a bad design in my opinion. I should be possible to use a module with the same name as a package.
Thanks for considering this issue, and let me know if I can help improve Python at this point.
Note: I asked the question first at stackoverflow.com:
https://stackoverflow.com/q/44227763/2173773
----------
components: Interpreter Core
messages: 294682
nosy: hakonhagland
priority: normal
severity: normal
status: open
title: It should be possible to use a module name with the same name as a package name
type: enhancement
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue30503>
_______________________________________
More information about the New-bugs-announce
mailing list