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