如何使用相对路径导入其他文件到执行文件而不是python命令路径?

时间:2017-12-27 03:17:22

标签: python

我的文件夹树:

./
├── README.MD
├── basic
│   └── thresh.py
├── images
│   └── figure.jpg
└── utils
    ├── util.py
    └── util.pyc

我想在util.py中导入thresh.py

import sys
sys.path.append('../utils')
import util

当我在$ python thresh.py文件夹中运行命令basic时,它没问题。但是在最顶层的文件夹中运行$ python ./basic/thresh.py,我将收到错误:

  

ImportError:没有名为util

的模块

那么如何使$ python ./basic/thresh.py$ python thresh.py都能通过给定文件的执行文件的相对路径来导入文件,而不管python命令路径是什么?

1 个答案:

答案 0 :(得分:1)

您可以获取正在执行的脚本的绝对路径(还有其他变体也使用__file__,但这应该有效)

import os
wk_dir = os.path.dirname(os.path.realpath('__file__'))
print( wk_dir )

然后通过它获取你的目录,例如

import sys
sys.path.append(wk_dir+'/../utils')

PS:您可能需要使用__file__代替'__file__'