Python从上面的文件夹导入而不使用路径?

时间:2018-01-05 04:27:45

标签: python python-3.x

对于Python 3,在这个沙箱中,foo有一个函数print_bar()我想在script1中使用。

myApp/
      main_folder/                         
                 helper/                 
                       __init__.py
                       foo.py
                 scripts/                  
                       script1.py

在script1中:

from ..helpers import foo

foo.print_bar()

我遇到了" ValueError:尝试相对导入超出顶级包"。

很好,我会尝试在其他SO问题上看到的sys路径内容。

import os
import sys

# Add parent folder path to sys.path
cur_path = os.path.dirname(os.path.realpath(__file__))
parent_path = os.path.dirname(cur_path)
sys.path.append(parent_path)

from helpers import foo

foo.print_bar()

好的,但这有点令人费解。有没有更简单的说法,"上一个目录并导入x?"

似乎是相对导入的"来自..helpers import foo"是什么应该工作,但我没有做对,还是我没有将它用于预期目的?

1 个答案:

答案 0 :(得分:0)

以下方法可用于在python路径中包含父文件夹:

import sys, os

sys.path.append('..')                  # method 1

sys.path.append(os.path.abspath('..')) # method 2

sys.path.append(os.pardir)             # method 3