python模塊包調用問題

Alinux

   |----- __init__.pywindows

   |-----  a.pyapp

   |---------Bide

         |--------- __init__.pyspa

         |---------b.pyorm

   |---------Cci

         |--------- __init__.pyit

         |--------c.pyast

如圖所示結構樹,B,C同屬於A的子目錄,可是B,C之間是平行的。。。form

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下須要‘\\’不然會出錯。。。。。。。(我在這點上走了好久的彎路。。。)

相關文章
相關標籤/搜索