Python Flask SQLAlchemy:导入 app.db 到 /models/model.py 失败
Python Flask SQLAlchemy: Import app.db to /models/model.py is failing
我觉得我犯了一个我无法确定的菜鸟错误。
我有以下文件夹结构
--MyAppRoot\
--app.py
----\models\__init__.py
----\models\models.py
----\models\data_handler.py
----\models\forms.py
----\models\a_few_other_py_files_etc.py
我的 app.py 有通常的 Flask(__name__)
等,db = SQLAlchemy(app)
已初始化。一切正常,所有来自各种模型 py 文件的导入工作正常,常见的东西,如烧瓶形式、wtforms 等。
在我的 data_handler.py 文件中,我是 运行 一个利用 Pandas 到 .send_to_sql
的抓取工具,但是我现在需要导入数据库以便我可以执行原始 SQL query
in db.session.execute(query)
在 Class 中使用,但这样做时出现以下错误:
Traceback (most recent call last):
File "C:/Users/me/PythonProjects/MyAppRoot/models/data_handler.py", line 7, in <module>
from app import db
File "C:\Users\me\PythonProjects\MyAppRoot\app.py", line 1, in <module>
from models.forms import (RegisterForm,
ModuleNotFoundError: No module named 'models.forms'; 'models' is not a package
感谢任何帮助。
问题
虽然 运行ning data_handler.py
python 导入系统在同一目录级别 (models.py
) 中找到名为 models
的模块。如果名称匹配,它不会通过 PYTHONPATH 进一步查找。
The directory containing the script being run is placed at the beginning of the search path
https://docs.python.org/3/tutorial/modules.html#the-module-search-path
How python deals with module and package having the same name?
解决方案 #1
所以你必须重命名包或模块名称\models\models.py
才能使导入系统正常工作。
可能的解决方案 #2(不确定)
您可以尝试从 C:/Users/me/PythonProjects/MyAppRoot/
目录而不是 C:/Users/me/PythonProjects/MyAppRoot/models/
目录 运行 您的脚本,方法如下:
python -m models.data_handler
我觉得我犯了一个我无法确定的菜鸟错误。
我有以下文件夹结构
--MyAppRoot\
--app.py
----\models\__init__.py
----\models\models.py
----\models\data_handler.py
----\models\forms.py
----\models\a_few_other_py_files_etc.py
我的 app.py 有通常的 Flask(__name__)
等,db = SQLAlchemy(app)
已初始化。一切正常,所有来自各种模型 py 文件的导入工作正常,常见的东西,如烧瓶形式、wtforms 等。
在我的 data_handler.py 文件中,我是 运行 一个利用 Pandas 到 .send_to_sql
的抓取工具,但是我现在需要导入数据库以便我可以执行原始 SQL query
in db.session.execute(query)
在 Class 中使用,但这样做时出现以下错误:
Traceback (most recent call last):
File "C:/Users/me/PythonProjects/MyAppRoot/models/data_handler.py", line 7, in <module>
from app import db
File "C:\Users\me\PythonProjects\MyAppRoot\app.py", line 1, in <module>
from models.forms import (RegisterForm,
ModuleNotFoundError: No module named 'models.forms'; 'models' is not a package
感谢任何帮助。
问题
虽然 运行ning data_handler.py
python 导入系统在同一目录级别 (models.py
) 中找到名为 models
的模块。如果名称匹配,它不会通过 PYTHONPATH 进一步查找。
The directory containing the script being run is placed at the beginning of the search path https://docs.python.org/3/tutorial/modules.html#the-module-search-path
How python deals with module and package having the same name?
解决方案 #1
所以你必须重命名包或模块名称\models\models.py
才能使导入系统正常工作。
可能的解决方案 #2(不确定)
您可以尝试从 C:/Users/me/PythonProjects/MyAppRoot/
目录而不是 C:/Users/me/PythonProjects/MyAppRoot/models/
目录 运行 您的脚本,方法如下:
python -m models.data_handler