使用相对路径导入Python脚本

Import Python script with relative path

我有一个脚本从它的目录中加载图像,我希望能够从任何文件中导入该脚本,而这个脚本仍然能够找到它的图像。这样可能更清楚:

  • A/

    • file1.py
    • images/img.png
  • B/

    • file2.py

file1.py中:

1
image = load_img("images/img.png")

file2.py中:

1
2
import file1
# here, I expect to be able to use file1.image

但是在文件2中,相对路径是相对于B/目录的,因此没有找到images/img.png

我怎样才能让我的image变量可用,不管我从哪里导入file1.py而不在这里写绝对路径?最好的做法是什么?

提前感谢您的帮助或建议。


获取"file1.py"目录并构造路径:

1
2
3
4
5
# Inside file1.py
import os

filename = os.path.join(os.path.dirname(__file__),"images/img.png")
image = load_img(filename)


默认情况下不能这样做。您需要使用sys.path.insert选项转到该文件夹,然后导入所需文件

1
2
3
4
5
import sys
sys.path.insert(0, '../A/')
import file1

print file1.image