一個python項目中一個文件需要引用另一個文件中的類,遇到的幾個問題,總結如下:
0x01
情況一:在同一目錄下
project
|--a.py
|--b.py
|--main.py
在main.py中,需要引用a.py和b.py中的類:
from a imoport *
from b imoport *
0x02
情況二:主路徑下調用子文件夾中的類
project
|--a
|---a.py
|--b
|---b.py
|--main.py
在main.py中,需要引用a.py和b.py中的類,a,b為文件夾
from a.a imoport *
from b.b imoport *
直接這樣引用會報錯,解決方法是在a,b文件夾中增加__init__.py文件
project
|--a
|---__init__.py
|---a.py
|--b
|---__init__.py
|---b.py
|--main.py
0x03
情況三:不同文件夾之間的調用
project
|--a
|---__init__.py
|---a.py
|--b
|---__init__.py
|---b.py
|--main.py
b中調用a中的類,或者a中調用b中的類
在b.py中
import sys
sys.path.append('E:\\testnow\\project\\a')
import a
linux和window的路徑格式不一樣,該方法適用於所有跨文件夾調用情況,但要注意路徑格式。
0x04
文件調用時出現的同一模塊重復調用問題
project
|--a
|---__init__.py
|---a.py
|--b
|---__init__.py
|---b.py
|--main.py
比如a.py中調用了
from time import *
from datetime import datetime
而且main.py中import了a:
from a.a import *
那么main.py中可以直接使用time(),datetime()相關函數,不需要再import了
此時如果main.py中 import time,並且這樣調用相關函數time.time() 或time.sleep(1) ,會出現報錯。
即使重復調用時,也要保證調用的一致性。