Python 包和导入 - 找不到模块 xy

1 投票
2 回答
998 浏览
提问于 2025-04-17 14:57

我正在尝试把我的项目结构整理成这样

app/
__init__.py
web/
    __init__.py
    web.py
database/
    __init__.py
    db.py

我想从 db.py 文件里导入几个类到 web.py 文件里,但总是出现 ImportError: No module named 的错误。我到目前为止尝试了这些

web.py

from __future__ import absolute_import
    from database.db import ClassA
OR

from __future__ import absolute_import
from app.database.db import ClassA

OR

from __future__ import absolute_import
import database import ClassA

我缺少了什么呢?

// 编辑:

db/__init __.py
from db import ClassA

其他的 __init__.py 文件都是空的。我想我在这方面做错了什么。

2 个回答

1

应该是这样的

from ..database import db

你也可以通过在项目根目录运行 web.py 来检查导入的内容

python -m app.web.web
1

假设:

C:\pytest\
   test.py
   \database\
       db.py
       __init__.py
   \subfolder\
       __init__.py
       coolios.py

其中 __init__.py 文件的内容是:

from db import *

而第二个 __init__.py 文件的内容是:

from coolios import *

并且 db.py 文件的内容是:

class WHAM():
    def __init__(self):
        print 'You import me!'

还有 coolios.py 文件的内容是:

from database import *

class ganster():
    def __init__(self):
        WHAM()

最后 test.py 文件的内容是:

from subfolder import ganster
ganster()

这样应该就能正常工作了。

撰写回答