我的文件夹树:
./
├── 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命令路径是什么?
答案 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__'
。