我有像这样的文件夹结构
main_folder
|
|--done
| |
| |--test1
| |--__init__.py
|
|---check.py
__ INIT __ PY:
class Tries(object):
def __init__(self):
print "Test"
check.py:
from done.test1 import Tries
Tries()
错误:
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-8-10953298e1df> in <module>()
----> 1 from done.test1 import Tries
ImportError: No module named done.test1
我无法从嵌套文件夹导入模块。有没有办法做到这一点。
修改
在Salva的回答之后,我改变了我的结构
.
├── check.py
|--__init__.py(no content)
└── done
├── __init__.py(no content)
└── test1
└── __init__.py <-- this files contains your Tries class
现在也抛出相同的错误。
答案 0 :(得分:1)
您希望将每个目录中的文件__init__.py
视为一个包,因此您需要在两个目录中使用它:
.
├── check.py
└── done
├── __init__.py
└── test1
└── __init__.py <-- this files contains your Tries class
答案 1 :(得分:1)
在以下文件/文件夹结构中,您的代码只适用于此处:
.
├── check.py
└── done
└── test1.py
当我运行check.py时,它会打印Test。我没有使用__init__.py。你所描述的__init__.py我做了test1.py。
答案 2 :(得分:1)
首先尝试导入包done
import done
如果它不起作用,可能是您运行的脚本来自您指定的不同文件夹(在本例中为main_folder
)
从日志中看起来你似乎在使用IPython,在这种情况下尝试将你的文件夹添加为模块路径
import sys
sys.path.append('path/to/your/main_folder')
import done