从嵌套文件夹导入模块[英] Importing modules from nested folder

问题描述

我有一个像这样的文件夹结构

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 

我无法从嵌套文件夹中导入模块.有什么方法可以做到吗?

编辑:

萨尔瓦的回答后,我改变了我的结构

.
├── check.py
|--__init__.py(no content)
└── done
    ├── __init__.py(no content)
    └── test1
        └── __init__.py <-- this files contains your Tries class

现在也会丢弃相同的错误.

推荐答案

您需要一个文件__init__.py在每个目录中,您都希望将其视为包裹,因此您在 目录中都需要它:

.
├── check.py
└── done
    ├── __init__.py
    └── test1
        └── __init__.py <-- this files contains your Tries class

其他推荐答案

在以下文件/文件夹结构中,您的代码仅在此处工作:

.
├── check.py
└── done
    └── test1.py

我运行check.py时打印测试.我没有使用__init__.py.您描述的__init__.py我做了test1.py.

其他推荐答案

尝试导入软件包done首先

import done

如果它不起作用,则可能是您从不同的文件夹中运行的脚本(在这种情况下为main_folder)

从日志中,您似乎正在使用ipython,在这种情况下,尝试将您的文件夹添加为模块路径

import sys
sys.path.append('path/to/your/main_folder')
import done

本文地址:https://www.itbaoku.cn/post/2481805.html