Python模块导入报错:无法从'website'导入create_app函数
解决ImportError: cannot import name 'create_app' from 'website'的问题
下面是针对这个导入错误的排查和解决步骤:
核对项目目录结构
确保你的项目层级正确,website作为Python包(必须包含__init__.py),要和main.py处于同一根目录下,示例结构:你的项目名/ ├── main.py └── website/ ├── __init__.py └── 其他相关文件如果
main.py放在子目录里,要么调整导入路径,要么手动把项目根目录添加到Python路径中。检查
create_app函数的定义
打开website/__init__.py,确认:- 函数名拼写完全正确(注意大小写,比如不要写成
Create_app或者createapp) - 函数定义在全局作用域里,没有嵌套在其他函数或类内部
正确的示例写法:
def create_app(): from flask import Flask app = Flask(__name__) # 这里添加你的应用配置、蓝图注册等逻辑 return app- 函数名拼写完全正确(注意大小写,比如不要写成
确认运行环境和工作目录
运行main.py时,一定要在项目根目录(也就是包含website和main.py的文件夹)下执行命令。比如用命令行操作的话:cd /path/to/你的项目名 python main.py不要直接在
website文件夹里运行main.py,否则Python无法识别website这个包。排查命名冲突
- 项目根目录下不能有和包名同名的文件(比如
website.py),否则会优先导入这个文件,覆盖对website包的引用 - 检查
__init__.py里有没有语法错误,或者有没有导入其他同名的create_app对象,导致函数被覆盖
- 项目根目录下不能有和包名同名的文件(比如
验证导入语句
main.py里的导入语句应该是:from website import create_app如果之前尝试导入
__init__,正确写法是from website.__init__ import create_app,但更推荐直接从包导入的方式。清理缓存文件
删除项目里的__pycache__文件夹,然后重新运行代码,避免旧的缓存代码干扰导入逻辑。
内容的提问来源于stack exchange,提问作者Prince mehta
相关产品推荐
相关产品推荐

