作者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/cn.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