Python:从父文件夹导入文件

时间:2011-01-09 00:24:49

标签: python

...现在我知道这个问题已被多次询问&我看过这些其他主题。到目前为止,没有任何工作,从使用sys.path.append('。')到导入foo

我有一个python文件,希望导入一个文件(在其父目录中)。你能帮我弄清楚我的子文件如何成功导入其父目录中的文件。我正在使用python 2.7

结构是这样的(每个目录中还包含 __ init __ .py文件):

  

StockTracker /
  的 __ 小样/
  的
____ a.py
  的
____ SubComp /
  的
__ _ __ _b.py

在b.py内部,我想导入a.py:所以我尝试了下面的每一个但是我仍然在b.py里面写了一个错误,说“没有这样的模块”

import a

import .a

import Comp.a

import StockTracker.Comp.a

import os
import sys
sys.path.append('.')
import a    
sys.path.remove('.')

3 个答案:

答案 0 :(得分:11)

from .. import a

应该这样做。这只适用于Python的最新版本 - 从2.6开始,我相信[编辑:从2.5开始]。

每个级别(Comp和Subcomp)也必须有一个__init__.py文件才能生效。你已经说过了。

答案 1 :(得分:8)

  

当包构成时   子包(与声音包一样)   在示例中),您可以使用绝对值   导入以引用子模块   兄弟姐妹套餐。例如,如果   模块sound.filters.vocoder需要   使用中的echo模块   sound.effects包,它可以使用   sound.effects import echo。

     

另外,从Python 2.5开始   到隐式相对导入   如上所述,你可以写   明确的相对进口与   来自模块导入名称导入形式   声明。这些明确的相对   进口使用前导点表示   当前和父包   参与相对进口。从   环绕模块,例如,你   可能会使用:

from . import echo
from .. import formats
from ..filters import equalizer

从这里引用http://docs.python.org/tutorial/modules.html#intra-package-references

答案 2 :(得分:5)

如果Comp目录在PYTHONPATH环境变量中,则为普通的

import a

会奏效。

如果您正在使用Linux或OS X,并从bash shell启动程序,则可以通过

完成该操作。
export PYTHONPATH=$PYTHONPATH:/path/to/Comp

对于Windows,请查看以下链接:

编辑:

要以编程方式修改路径,您在原始问题中处于正确的轨道上。您只需添加父目录而不是当前目录。

sys.path.append("..")
import a