我有一个目录设置,如下所示:
/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)
像@sharth一样,我尝试复制您的文件结构并复制您的错误,但是没有成功。使它失败的唯一方法是删除db.py
。因此,您需要确保目录中确实有一个db.py
文件app
。
可能会引起您注意的一些方法:
您有一个db.py.txt
或其他扩展名。您的设置可能会导致文件扩展名不会自动显示,因此即使您认为您正在查看的是python文件,它实际上也不是.py
文件。
这个名字以某种方式被打错了。也许是文件名,也许是扩展名。例如,db.oy
。
您有旧.pyc
文件。在测试时,我删除了db.py
,但是它仍然有效,因为我仍然.pyc
在目录中保存文件。只是在我删除它们之后,才发生错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句