请稍等 ...
×

采纳答案成功!

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

7-15 2:50左右, ​关于入口文件的相对引入报错那部分

关于入口文件的相对引入那部分, 老师的说法是:"  原因是相对引入的时候,会根据模块的__name__来定位,而__name__被替换成了__main__, 导致路径找不到", 我认为...这里好像有问题, 因为哪怕是用-m的方法,__name__依旧是__main__.  所以我觉得.实际应该是 '.' 替代了 __package__  而不是替代了  '__name__' 也就是说,应该是根据__package__来定位的,而非__name__   应该有表述清楚了,不知道说的对不对,  求老师解答...

正在回答

1回答

7七月 2017-10-07 03:46:37

我们来探讨下。如果是按照package来决定,不考虑__name__,那么可执行的main里用相对路径应该是没问题的。因为package不会被更改。这是第一个疑问。第二个,你可以发现-m 参数用的不是绝对路径来执行文件,而是用的命名空间 点号。可以详细看一下命名空间。

0 回复 有任何疑惑可以回复我~
  • 提问者 Arya丶 #1
    额..可能我理解错了..但是还是要问清楚...   第一点...  我记得直接执行入口文件时,入口文件是不属于任何包,所以package没有值..如果以package来决定的话,这时候使用相对路径,应该是要报错才对的...因为package没有值 或者说为None?      第二点...但是即使用了 -m参数 , __name__的值依旧是__main__ 这点其他同学也有提到..这个情况下是怎么根据__name__来定义路径呢...
    回复 有任何疑惑可以回复我~ 2017-10-08 15:55:55
  • 7七月 回复 提问者 Arya丶 #2
    这是个机制问题加了-m,确实不会改变这个__name__但是命名空间可以知道呀。__name__其实你换一个角度他就是命名空间。一个全路径的形式指向某个模块。
    回复 有任何疑惑可以回复我~ 2017-10-08 21:20:05
  • 提问者 Arya丶 回复 7七月 #3
    已经成功绕晕
    回复 有任何疑惑可以回复我~ 2017-10-09 23:28:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信