Importing modules from nested folder
本问题已经有最佳答案,请猛点这里访问。
我有这样的文件夹结构
1 2 3 4 5 6 7 8 | main_folder | |--done | | | |--test1 | |--__init__.py | |---check.py |
P.
1 2 3 | class Tries(object): def __init__(self): print"Test" |
检查:PY:
1 2 | from done.test1 import Tries Tries() |
错误:
1 2 3 4 5 6 | --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-8-10953298e1df> in <module>() ----> 1 from done.test1 import Tries ImportError: No module named done.test1 |
我无法从嵌套文件夹导入模块。有什么办法可以做到这一点吗?
编辑:
在萨尔瓦的回答之后,我像这样改变了我的结构
1 2 3 4 5 6 7 | . ├── check.py |--__init__.py(no content) └── done ├── __init__.py(no content) └── test1 └── __init__.py <-- this files contains your Tries class |
同样的错误现在也被抛出。
先尝试导入包
1 | import done |
如果它不起作用,可能是您运行的脚本来自不同于您指定的文件夹(在本例中是
从日志来看,您似乎正在使用ipython,在这种情况下,请尝试将文件夹作为模块路径添加。
1 2 3 | import sys sys.path.append('path/to/your/main_folder') import done |
在以下文件/文件夹结构中,您的代码仅在此处工作:
1 2 3 4 | . ├── check.py └── done └── test1.py |
当我运行check.py时,它打印测试。但我没有使用初始化。你所说的"初始"是我做的test1.py。
您需要在每个目录中都有一个文件
1 2 3 4 5 6 | . ├── check.py └── done ├── __init__.py └── test1 └── __init__.py <-- this files contains your Tries class |