【问题标题】:Importing from a parent directory in Python does not work从 Python 中的父目录导入不起作用
【发布时间】:2014-06-12 20:13:45
【问题描述】:

即使在父目录中有__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 解决方案可以做一些简单的事情,比如从父目录中的目录导入模块?

【问题讨论】:

标签: python import directory


【解决方案1】:

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

from ..  import targetDir

或:

from ..targetDir import something

【讨论】:

    【解决方案2】:

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

    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

    【讨论】:

      猜你喜欢
      • 2021-11-04
      • 2013-11-09
      • 2016-12-27
      • 2012-07-08
      • 2020-03-21
      • 2021-09-08
      • 2021-08-15
      • 1970-01-01
      • 2015-07-23
      相关资源
      最近更新 更多