请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

包的导入问题,在pycharm下面都不会报错,在jupyter notebook下面报错,是因为什么啊?

正在回答

1回答

没有一个包叫 metrics。按照课程中的结构,有一个包叫 playML(目测按照你的写法,就是有一个包叫 mymodule)。你要加载 playML 中的 metric,写法应该是:


from playML import metrics


或者直接将相应的函数引进来:


from playML.metrics import accuracy_score


参考这里:https://git.imooc.com/coding-169/coding-169/src/master/04-kNN/04-Accuracy-Score/04-Accuracy-Score.ipynb 的 In[14]


=========


相应的,在包中引用包内的其他文件,需要加点(.),参考这里的第 4 行:https://git.imooc.com/coding-169/coding-169/src/master/04-kNN/04-Accuracy-Score/playML/kNN.py

表示引用的是这个包里的 metrics 文件。

可以参考这里:https://coding.imooc.com/learn/questiondetail/y0K5g68Bz1nYe2QN.html 


如果你不写 .metrics,在 pycharm 下运行你的程序是正确的,说明你的测试函数(__main__) 函数写在了包的内部。请把测试函数写在包的外面,在包的外面测试包。(Jupyter Notebook 就在包的外面)


包内和包外的路径是不一样的。我们写一个包的目的,是要能够让程序在包外调用。


继续加油!:)



0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕村8280326 #1
    老师,我之前学习python基础的时候看调用模块是 from 模块 import 函数名,这里为什么不行了啊
    回复 有任何疑惑可以回复我~ 2021-08-24 17:15:53
  • 提问者 weixin_慕村8280326 #2
    老师我试了一下,只有在这个py文件和jupyter notebook文件在同一个文件的时候才可以这样用,这种会不会是路径的影响导致了这种差异啊?
    回复 有任何疑惑可以回复我~ 2021-08-24 17:39:31
  • liuyubobobo 回复 提问者 weixin_慕村8280326 #3
    1)因为 metrics 不是模块名;2)我给你的回答告诉你的就是你要调整文件的路径:a) py 文件里 metrics 前要加点(.);b)请在包外测试包,不要在包内测试包
    回复 有任何疑惑可以回复我~ 2021-08-25 07:05:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信