您的位置:首页 > 编程语言 > Python开发

python模块包调用解析

2015-10-23 21:20 609 查看
原文 http://wuyanzan60688.blog.163.com/blog/static/1277761632011102113211189/
A

|----- __init__.py

|----- a.py

|---------B

|--------- __init__.py

|---------b.py

|---------C

|--------- __init__.py

|--------c.py

如图所示结构树,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"

如果A中a.py要调用B中或者C中py,则可以如下方式调用(以B为例)

from B import b

b.b_hello()

运行结果:B_HELLO

但是如果是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

所以,这种方法不行,那如何做呢,如下

import sys

sys.path.append('E:\\testnow\\A\\C')

import c

def b_hello():

print "B_HELLO"

c.c_hello()

用这种方法,输出结果是:C_HELLO

也即刚才上面的“from 文件夹 import 模块名”只适用于父目录调用子目录的情况。。。而第二种方法则对所有的情况都适用,包括两个模块甚至都不在一个盘的情况。。。这里需要注意的一点是:sys.path添加目录时注意是在windows还是在linux下,windows下需要‘\\’否则会出错。。。。。。。(我在这点上走了很久的弯路。。。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: