目錄
- 同一個目錄下
- 不同目錄下
- 舉例說明其它方法
- Pycharm下的調用問題
一、同一個目錄下
調用同一個目錄下的時,可以直接:
- import XXX.py
- from 文件夾 import XXX.py
只是第一種形式會有波浪線提醒,不過不影響運行。
波浪線問題消除見第四章
二、不同目錄下
在上面基礎上,加上層級名稱即可
當然也可以通過指定路徑的方式處理,見第三章
三、舉例說明其它方法
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"
3.1 如果A中a.py要調用B中或者C中py
則可以如下方式調用(以B為例)
from B import b
b.b_hello()
運行結果:B_HELLO
3.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
所以,這種方法不行,那如何做呢,如下
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下需要'\\'否則會出錯。(我在這點上走了很久的彎路)
四、Pycharm下的調用問題
pycharm在同目錄下import,pycharm會提示錯誤,但是可以運行
原因是: pycharm不會將當前文件目錄自動加入自己的sourse_path。
解決方案:右鍵make_directory as-->sources path將當前工作的文件夾加入source_path就OK了