1
mengzhuo 2014-08-15 11:00:21 +08:00
这个需求貌似违反了Python的明确比隐晦好的标准……
__init__里一般不是空的,有作者、版本、授权方式之类的东西 |
3
totoismi 2014-08-15 12:17:06 +08:00
__init__.py 为空,如果仅仅导入包,基本什么都做不了的
|
4
no13bus 2014-08-15 12:43:44 +08:00
```python
import bar __all__ = ['bar'] ``` all是明确你需要导入哪些东西,python建议你写,不然的话 python会把所有东西都导入的。不明确 |
6
no13bus 2014-08-15 14:45:19 +08:00
@pyKun sorry 我以为现在v2ex已经支持mrkdown了呢。实际代码是这样的。写到foo的init里面。
import bar,bar1,bar2 __all__ = ['bar'] 那么你在from foo import *的时候 只能导入bar。 bar1 bar2都不能导入。__all__的意思就是让你对模块内的接口进行限制 以免默认情况下导入了一些变量 会对程序造成污染。 |
7
pyKun OP @no13bus
这个明白,我现在环境也是这么解决的,但是我奇怪的是另一个module,同样情况,在 __init__.py 除了声明,license什么也没有,但是那个就能找到对应的 foo.bar |
8
pyKun OP |
9
totoismi 2014-09-05 16:56:15 +08:00
是的,按照你的代码结构,from foo import bar是可以的。但是import foo后foo.bar是找不到bar的。
|