[問題] ImportError

作者: callmejohn (john)   2018-08-08 10:09:11
大家好,想請問個新手問題
最近跟著書在做一些範例,遇到了一個import的問題
範例中做了兩個檔案"data.py"及"Env.py" (我把他們放在同一個資料夾內)
然後在Env.py中要import "data.py"這個檔案
書中用 from . import data
我查了一下應該是relative path的用法
卻發生錯誤如下:
ImportError: cannot import name 'data'
有看到有些人說要加放一個__init__.py
試過了好像沒有用
想請問問題可能出在哪裡?
謝謝大家
作者: gmccntzx1 (o.O)   2018-08-08 10:18:00
把你書上的範例放到這上面來重現 https://repl.it/
作者: callmejohn (john)   2018-08-08 10:45:00
感謝樓上分享,自問自答 把from . 刪掉就好了.....
作者: TitanEric (泰坦)   2018-08-08 10:47:00
我記得在Python 3某版後 module不用再有__init__.py
作者: gmccntzx1 (o.O)   2018-08-08 10:50:00
有 __init__.py 的好處是可以在裡面處理一些細節對於有要做模組化的需求時是很有用的, 不過一般小的project 也是可以不用那麼麻煩.也謝謝 @TitanEric, 我去找一下在 PEP 哪一篇有講這個找到了, PEP 420 我來看一下補充一下我上面提到的東西. 像是 numpy 為了讓使用者可以在 from numpy import XXX 後針對該 submodule直接做執行 unit test, 而不用在 terminal 下指令所以在每個 submodule 的 __init__.py 裡有定義他們自己寫的 tester. 參考: https://git.io/fNyKM舉例來說, 如果要跑 numpy.ma 這個 submodule 的 test可以用 numpy.ma.test() 去執行
作者: callmejohn (john)   2018-08-08 11:45:00
謝謝兩位分享,雖然小弟目前看得霧煞煞......XD
作者: ThxThx (洗洗睡)   2018-08-08 14:23:00
#1RBAp0aW (Python)我只之前寫的,ImportError幾乎都快變成月經文了
作者: TitanEric (泰坦)   2018-08-08 16:52:00
原來module的init可以跑測試 第一次知道 感謝g大

Links booklink

Contact Us: admin [ a t ] ucptt.com