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下需要‘\\’否则会出错。。。。。。。(我在这点上走了很久的弯路。。。)
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下需要‘\\’否则会出错。。。。。。。(我在这点上走了很久的弯路。。。)
相关文章推荐
- python读取xml数据
- Python调用nmap扫描网段主机信息生成xml
- Python深入:Distutils安装包
- 流动python - 一个极简主义event制
- C#调用Python语言
- 【Python爬虫实战--3】html写正则表达式
- python例子-Django之模型(Model_数据库)
- Python深入:修改Python搜索路径
- python opencv入门(读 / 写 显示以及转换图像 和 视频读入)
- python链接postgresql数据库
- python中的else子句
- windows下面安装Python和pip
- python爬取网易评论
- Python lambda 匿名函数 (二十二)
- 人们为什么不使用Python3?
- Python -- 文档测试
- python copy 深拷贝与浅拷贝
- 通过编写聊天程序来熟悉python中多线程及socket的用法
- Python 正则表达式
- Python 正则表达式