├── Ipy
│   ├── bin
│   │   ├── bin.py
│   │   └── __init__.py
│   ├── test
│   │   ├── calculation.py
│   │   ├── date20180422.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── calculation.cpython-36.pyc
│   │       └── __init__.cpython-36.pyc

 有如上文件路径,执行文件为bin.py,被调用文件是calculation.py模块。

计划在bin文件中加入from test import calculation 语句来导入被调用文件中的方法,那么如何让python能够识别到test这个目录的路径呢?我们只需要让Python能够找到Ipy目录,就自然能够找到它下面的test的目录。

1、通过__file__获取当前的文件名:bin.py

2、通过os.path.abspath(__file__)获取文件的绝对路径:../bin/bin.py

3、通过os.path.dirname()方法可以获取到文件目录的路径:../bin

4、再次通过os.path.dirname()获取Ipy目录的绝对路径

5、将获取的Ipy目录的绝对路径加入到python环境变量中,通过sys.path.insert()方法,加到系统路径的开始位置,测试用append方法追加在最后无法成功。

  路径测试代码:

1 import sys, os
2 
3 print('执行文件是 %s' % __file__)
4 f_name = os.path.abspath(__file__)
5 print('执行文件的绝对路径: ', f_name)
6 d_name = os.path.dirname(f_name)
7 print("执行文件的目录的绝对路径是: ", d_name)
8 f_d_name = os.path.dirname(d_name)
9 print("与被调用文件的目录的上一级目录绝对路径:", f_d_name)

  添加路径:

1 import sys, os
 2 
 3 # 根据os.path.abspath(__file__)获取当前文件的绝对路径
 4 # 通过os.path.dirname()获取当前文件目录的绝对路径
 5 
 6 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 7 
 8 # sys.path.append(BASE_DIR) append方法在linux下会报错
 9 # print(sys.path)
10 # 采用insert的列表插入方法,将获取的文件夹路径临时的添加到文件路径列表中
11 sys.path.insert(0, BASE_DIR) 
12 from test import calculation
13 
14 res = calculation.add(1, 2)
15 print(calculation.add(1, 2))