python引用另外一个文件夹里的python函数

Alinux

   |----- __init__.pywindows

   |-----  a.pyapp

   |---------Bit

         |--------- __init__.pyast

         |---------b.pytest

   |---------Cimport

         |--------- __init__.pymodule

         |--------c.py方法

如图所示结构树,B,C同属于A的子目录,可是B,C之间是平行的。。。im

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下须要‘\\’不然会出错。。。。。。。(我在这点上走了好久的弯路。。。)

相关文章
相关标签/搜索