找不到Python导入模块错误

凯文·约翰逊

我有一个目录设置,如下所示:

/directory
/directory/__init__.py
/directory/setup.py
/directory/app/db.py
/directory/app/__init__.py

/directory/__init__.py文件包含“导入应用程序”/directory/app/__init__.py行,当我尝试运行setup.py文件时由于“导入数据库”行而失败

但是,如果我将错误行更改为“ from app import db”,则可以正常工作。为什么是这样?我猜这与我从父目录运行它有关。有什么办法可以使这项工作吗?还是将所有导入更改为“从应用程序导入x”,即使从应用程序文件夹中调用它也是如此?

感谢您的澄清。

编辑:这是错误:

Traceback (most recent call last):
File "setup.py", line 2, in <module>
import app
File "/directory/app/__init__.py", line 1, in <module>
import db
ImportError: No module named 'db'

Edit2:这是/directory/app/__init__.py文件(/directory/__init__.py为空)

import db
from flask import Flask, render_template

DEBUG = True

app = Flask(__name__)

app.config.from_object(__name__)

@app.route("/")
def hello():

    return render_template()

def run(host, port):
    db.init_db()

    app.run(host=host, port=port)

最终编辑:我在这里重新表述了我的问题并给出了正确的答案。我不确定python3的更改是否相关。谢谢!

罗伯·沃茨

像@sharth一样,我尝试复制您的文件结构并复制您的错误,但是没有成功。使它失败的唯一方法是删除db.py因此,您需要确保目录中确实有一个db.py文件app

可能会引起您注意的一些方法:

  1. 您有一个db.py.txt或其他扩展名。您的设置可能会导致文件扩展名不会自动显示,因此即使您认为您正在查看的是python文件,它实际上也不是.py文件。

  2. 这个名字以某种方式被打错了。也许是文件名,也许是扩展名。例如,db.oy

  3. 您有旧.pyc文件。在测试时,我删除了db.py,但是它仍然有效,因为我仍然.pyc在目录中保存文件。只是在我删除它们之后,才发生错误。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章