Python 包的引入顺序到底是怎样的?

文件结构如下:
$tree.
.
├──main.py
├──os.py
└──platform.py
main.py:
importplatform
importos
importsys
print('Nowinmain,Start`entercodehere`toExecfollowing')
print(os.getcwd())
print(sys.modules['platform'].__file__)
print(platform.processor())
os.py:
print('Nowinos.pymodule')
platform.py:
print('Nowinplatform.pymodule')
当我运行pythonmain.py,结果如下:
$pythonmain.py
Nowinplatform.pymodule
Nowinmain,StarttoExecfollowing
/Users/michael/Code/00-Temp/pkg_import
/Users/michael/Code/00-Temp/pkg_import/platform.py
Traceback(mostrecentcalllast):
File"main.py",line9,in
print(platform.processor())
AttributeError:module'platform'hasnoattribute'processor'
问题1:os和platform都是内置模块,当importos,默认走到了内置模块,但是importplatform,却获取了同级目录下的plarform,为何出现这个现象呢?
问题2:同样的脚本,我在Pycharm中直接运行main.py,却报这个错误:
/Users/michael/anaconda3/bin/python/Users/michael/Code/00-Temp/pkg_import/main.py
Nowinos.pymodule
FatalPythonerror:initsite:Failedtoimportthesitemodule
Traceback(mostrecentcalllast):
File"/Users/michael/anaconda3/lib/python3.7/site.py",line570,in
main()
File"/Users/michael/anaconda3/lib/python3.7/site.py",line547,inmain
known_paths=removeduppaths()
File"/Users/michael/anaconda3/lib/python3.7/site.py",line126,inremoveduppaths
dir,dircase=makepath(dir)
File"/Users/michael/anaconda3/lib/python3.7/site.py",line91,inmakepath
dir=os.path.join(*paths)
AttributeError:module'os'hasnoattribute'path'
Processfinishedwithexitcode1
叮当猫咪
浏览 1120回答 2
2回答

弑天下

如果是python环境那么,导包会先从同级目录去找你导入的模块。如果找不到,回去python内置的第三方包去查找模块。完整的查找方式为:同级方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript