从Python中的父目录导入不起作用

时间:2014-06-12 20:13:45

标签: python import directory

即使在父目录中有__init__.py

parentDir\
    __init__.py
    targetDir\
        __init__.py
        something.py
    thisDir\
        main.py

在main.py中:

import .targetDir.something

这不起作用。我试过了:

from . import targetDir
from targetDir import something

这也不起作用。是否有任何Pythonic解决方案可以执行从父目录中的目录导入模块这么简单的事情?

2 个答案:

答案 0 :(得分:0)

我相信你需要__init__.py thisDir,然后你需要在包层次结构中上升一级:

from ..  import targetDir

或:

from ..targetDir import something

答案 1 :(得分:0)

可能这不是最干净的解决方案,但你可以这样做:

import sys
import os

topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
                                       os.pardir, os.pardir))
if os.path.exists(os.path.join(topdir, "targetDir", "__init__.py")):
    sys.path.insert(0, topdir)

from targetDir import something

实施例

mkdir -p parentDir/targetDir
mkdir -p parentDir/thisDir
touch parentDir/__init__.py
touch parentDir/targetDir/__init__.py
echo "print 'Im here'" > parentDir/targetDir/something.py

然后将代码放在parentDir/thisDir/main.py中,它应该打印Im here