请教笨办法 48 和 49 题 import error 与 __init__.py 文件 的问题

2013-11-24 03:18:56 +08:00
 reloop
教程的写法只有一句
from ex48 import lexicon

但根据他说的骨架 , lexicon 这个类应该从 ex48.ex48.ex48 这里导入才对
为什么他可以那样写?
而且 , 最整我的是即使我写 from ex48.ex48.ex48 import lexicon 也会出现 ImportError
为了方便 , 下面说成 ex48.project.main

因为 ex48 这个目录的父目录是 PYTHONPATH 环境变量中指定的
所以我以为 ex48.project.main 就一定能导入 main.py 里边的东西
但试了千百次还是 ImportError 一次又一次的

后来我发现只要在 project 这个目录下创建 __init__.py 空文件就能 import 成功

因为教材的写法很简单 , 而且他在说创建骨架的时候 , 没有说要在项目文件夹 (skeleton | ex48) 下创建一个 __init__.py , 所以我有点怀疑我的解决方法是正确的吗?

下面是书里说的项目骨架结构
root
skeleton
setup.py
__init__.py # 加上这个文件才能正常导入模块
bin
docs
NAME
__init__.py
tests
__init__.py
NAME_tests.py
3720 次点击
所在节点    Python
3 条回复
reloop
2013-11-24 04:16:51 +08:00
root
----skeleton
--------setup.py
--------__init__.py # 加上这个文件才能正常导入模块
--------bin
--------docs
--------NAME
------------__init__.py
--------tests
------------__init__.py
------------NAME_tests.py
muzuiget
2013-11-24 09:47:02 +08:00
楼主基础姿势不扎实,因为 Python 就是当发现一个目录下有 __init__.py 文件,才当成一个模块目录,才能 import 呀。
reloop
2013-11-24 12:34:30 +08:00
@muzuiget 谢谢! 只有这个方法吗? 有点不方便啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/90403

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX