/user/test:
....A
........a.py
....B
........b.py
a.py:
def fa():
print("a")
b.py想调用a.py中的函数fa():
sys添加路径方法
import sys
sys.path.append("test/A")
from a import *
fa()
init方法-1:
- 在A文件夹和B文件夹中新建__init__.py文件,目录变成:
test:
....A
........a.py
........init.py
....B
........b.py
........init.py - b.py中的内容为:
from A.a import *
fa()
此时,b.py运行的时候,首先需要将目录切换到test文件夹,即:/user/test目录下;然后执行python -m B.b
。这个时候会把当前执行目录(/user/test
)添加到sys.path中。这个目录包含需要导入的模块A.a的路径,所以模块导入成功。
如果直接在/user/test/B
目录下运行python b.py
,则会将b.py文件所在的目录/user/test/B
添加到sys.path中。这个目录不包含导入的模块:a.py的路径(/user/test/A
),所以会导入模块失败。
init方法-2:
- 在test文件夹中新建文件c.py,在c.py中调用b.py,此时,b.py导入a.py模块的时候以c.py作为相对路径。
- b.py
from A.a import *
def fb():
fa()
- c.py
from B.b import *
fb()
- 执行
python c.py
,此时,会把c.py的目录/user/test
添加到sys.path中。模块可以导入成功。