即使在父目录中有__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解决方案可以执行从父目录中的目录导入模块这么简单的事情?
答案 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