作者callmejohn (john)
看板Python
標題[問題] ImportError
時間Wed Aug 8 10:09:11 2018
大家好,想請問個新手問題
最近跟著書在做一些範例,遇到了一個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://webptt.com/m.aspx?n=bbs/Python/M.1533694156.A.237.html
2F:→ callmejohn: 感謝樓上分享,自問自答 把from . 刪掉就好了..... 08/08 10:45
3F:推 TitanEric: 我記得在Python 3某版後 module不用再有__init__.py 08/08 10:47
4F:推 gmccntzx1: 有 __init__.py 的好處是可以在裡面處理一些細節 08/08 10:50
5F:→ gmccntzx1: 對於有要做模組化的需求時是很有用的, 不過一般小的 08/08 10:51
6F:→ gmccntzx1: project 也是可以不用那麼麻煩. 08/08 10:52
7F:→ gmccntzx1: 也謝謝 @TitanEric, 我去找一下在 PEP 哪一篇有講這個 08/08 10:53
8F:→ gmccntzx1: 找到了, PEP 420 我來看一下 08/08 10:56
9F:→ gmccntzx1: 補充一下我上面提到的東西. 像是 numpy 為了讓使用者 08/08 11:01
10F:→ gmccntzx1: 可以在 from numpy import XXX 後針對該 submodule 08/08 11:02
11F:→ gmccntzx1: 直接做執行 unit test, 而不用在 terminal 下指令 08/08 11:03
12F:→ gmccntzx1: 所以在每個 submodule 的 __init__.py 裡有定義他們 08/08 11:03
14F:→ gmccntzx1: 舉例來說, 如果要跑 numpy.ma 這個 submodule 的 test 08/08 11:06
15F:→ gmccntzx1: 可以用 numpy.ma.test() 去執行 08/08 11:07
16F:→ callmejohn: 謝謝兩位分享,雖然小弟目前看得霧煞煞......XD 08/08 11:45
18F:→ ThxThx: 我只之前寫的,ImportError幾乎都快變成月經文了 08/08 14:23
19F:推 TitanEric: 原來module的init可以跑測試 第一次知道 感謝g大 08/08 16:52