I am using Python 3.10.
- I created a module
os.py
in a directory,my_dir
. - I am trying to access my
os.py
usingimport os
, frommy_dir
directory. - But it is loading Python's
os
module, not mine. - I inserted
my_dir
insys.path
as a first element, but still it's loading Python'sos
module. - I repeated the same with another standard library of Python 3,
datetime
. But it's working as expected. i.e., it's loading mydatetime.py
, not Python's.
Why does only the os
module have this problem? Is it a bug in Python 3?
CodePudding user response:
if you want to import some module A that happens to have the name of some other module B, that its placement in the import hierarchy mean that module B is found first, then you need to use a relative import to clearly differentiate between the two from withing modules in the same package
for example, said you have
my_dir
__init__.py
os.py
app.py
for app.py to use your os.py you do
from .os import X