总结一下自己做的模块或者包import不了的问题:
(1)每个python文件可以看做一个模块
(2)每个文件夹可以看做一个包,包中含有多个模块,即多个python文件
(3)每个包,即每个文件夹都需要一个__init__.py文件,用来管理包内模块的调用。内容比如下面的:
#in __init__.py
from anet import *
from cc import *
(4)如果我们并不需要,或者并不想要调用一个python文件内的所有类,方法和属性,可以在python文件内部使用__all__。举例,在cc模块下使用__all__暴露接口:
#in cc.py
__all__ = ["dog", "cat"]
def dog():
print("dog")
cat = "cat"
def man():
print("man")
woman = "woman"
这样在外部调用cc模块的时候,是无法直接使用man方法和woman属性的
(5)同样可以在__init__.py中使用__all__控制暴露的模块:
#in __init__.py
__all__ = ["anet", "cc"]
from anet import *
from cc import *
(6)模块import不了,有可能是python运行时并没有将模块所在路径纳入搜索范围。搜索路径可以通过下面方式查看:
>>> import sys
>>> sys.path
也可以在程序内,将模块路径添加到搜索路径中:
import sys
sys.path.append("~/projects/xxx")