【问题标题】: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