python模块包调用问题
包结构如下:
如图所示结构树,B,C同属于A的子目录,但是B,C之间是平行的。。。
b.py,c.py代码分别如下:
b.py:
def b_hello():
print “B_HELLO”
c.py:
def c_hello():
print “C_HELLO”
1. 如果A中a.py要调用B中或者C中py,则可以如下方式调用(以B为例)
from B import b
b.b_hello()
运行结果:B_HELLO
2. 但是如果是B中或者C中py调用B中或C中呢?
这个时候如果我们依旧用如上所说调用,则会报错(这里是b.py调用c.py)
>>>
Traceback (most recent call last):
File “E:\testnow\A\B\b.py”, line 1, in <module>
from C import c
ImportError: No module named C
所以,这种方法不行,那如何做呢,如下
b.py:
import sys
sys.path.append(‘E:\\testnow\\A\\C’)
import c
def b_hello():
print “B_HELLO”
c.c_hello()
用这种方法,输出结果是:C_HELLO
总结:
1. “from 文件夹 import 模块名”只适用于父目录调用子目录的情况。
2. sys.path.append()对所有的情况都适用,包括两个模块甚至都不在一个盘的情况。
3. sys.append() 添加目录时注意”\\”
转载: http://blog.csdn.net/raoqiang19911215/article/details/22797939