Python 如何导入内置模块而不是当前文件夹中的同名自定义模块?
我有一个名为Python 如何导入内置模块而不是当前文件夹中的同名自定义模块?,python,Python,我有一个名为mylib的Python包,里面有一个名为os的模块: mylib |- __init__.py |- os |- __init__.py |- makedirs.py 现在,当我导入mylib时,它的\uuuu init\uuuu.py被调用: from os import environ from os.path import dirname, join, abspath # then do something with the paths 在这里,我试图使用内
mylib
的Python包,里面有一个名为os
的模块:
mylib
|- __init__.py
|- os
|- __init__.py
|- makedirs.py
现在,当我导入mylib时,它的\uuuu init\uuuu.py
被调用:
from os import environ
from os.path import dirname, join, abspath
# then do something with the paths
在这里,我试图使用内置的os
,但我的Python似乎认为我想使用mylib
的模块os
,因此抛出:
ImportError: No module named path
我知道有些人反对在自定义名称中使用与标准内置名称相同的名称,但我真的认为我应该保留名称os
,因为它是最直观、最容易记住的名称
在这种情况下,我如何让Python知道它应该导入内置的
os
?您是否尝试过从mylib导入abc,xyd中导入?只导入所需内容。如果您的软件包不打算仅由您自己使用,os
可能会误导其他人,记住这一点。@GreenCoveGuy将不会mylib.os
仍然被缓存在sys.modules
?为什么不做一件简单的事情,重命名你的模块?找出python模块在你的计算机上保存的位置,然后通过文件路径导入它们。实际上,最简单的方法是重命名你的软件包-os
可能是个好名字,但是operating\u system
或者你的os
所代表的任何东西会那么糟糕吗?导入时,您始终可以将其别名,例如,将操作系统导入为osm