为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

叮当猫咪 2019-05-11 08:46:58
文件结构如下:$tree..├──main.py├──os.py└──platform.pymain.py:importplatformimportosimportsysprint('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.pyNowinplatform.pymoduleNowinmain,StarttoExecfollowing/Users/michael/Code/00-Temp/pkg_import/Users/michael/Code/00-Temp/pkg_import/platform.pyTraceback(mostrecentcalllast):File"main.py",line9,inprint(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.pyNowinos.pymoduleFatalPythonerror:initsite:FailedtoimportthesitemoduleTraceback(mostrecentcalllast):File"/Users/michael/anaconda3/lib/python3.7/site.py",line570,inmain()File"/Users/michael/anaconda3/lib/python3.7/site.py",line547,inmainknown_paths=removeduppaths()File"/Users/michael/anaconda3/lib/python3.7/site.py",line126,inremoveduppathsdir,dircase=makepath(dir)File"/Users/michael/anaconda3/lib/python3.7/site.py",line91,inmakepathdir=os.path.join(*paths)AttributeError:module'os'hasnoattribute'path'Processfinishedwithexitcode1
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

如果是python环境那么,导包会先从同级目录去找你导入的模块。如果找不到,回去python内置的第三方包去查找模块。完整的查找方式为:同级方法<--同级模块<--同级包<--第三方包
                            
查看完整回答
反对 回复 2019-05-11
  • 2 回答
  • 0 关注
  • 1119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信