非Flask场景:ModuleNotFoundError——找不到'app'模块求助
解决ModuleNotFoundError: No module named 'app'问题
问题场景
项目目录结构如下:
├── README.md ├── app │ ├── __init__.py │ ├── config.py │ ├── examples │ └── simple_schema │ ├── __init__.py │ ├── consumer.py │ └── producer.py ├── requirements.txt
在examples.simple_schema.consumer.py或examples.simple_schema.producer.py中执行import app.config或from app import config时,出现ModuleNotFoundError: No module named 'app'错误。
原因
Python的模块搜索路径默认不包含app目录的父目录(即项目根目录)。当直接运行consumer.py或producer.py时,Python会以脚本所在目录为基准查找模块,找不到上层的app模块。
解决方案
方法1:临时设置PYTHONPATH环境变量
在项目根目录(包含README.md的目录)执行以下命令,将项目根目录加入Python的模块搜索路径:
- Linux/macOS:
export PYTHONPATH=$(pwd) python app/examples/simple_schema/consumer.py
- Windows CMD:
set PYTHONPATH=%cd% python app\examples\simple_schema\consumer.py
- Windows PowerShell:
$env:PYTHONPATH = Get-Location python app\examples\simple_schema\consumer.py
方法2:在脚本中手动添加路径
在consumer.py或producer.py的开头添加以下代码,动态将项目根目录加入搜索路径:
import sys from pathlib import Path # 向上回溯4层找到项目根目录(app的父目录) project_root = Path(__file__).parent.parent.parent.parent sys.path.append(str(project_root)) # 之后即可正常导入 from app import config
方法3:将项目安装为可编辑模块
在项目根目录运行以下命令,把项目以可编辑模式安装到Python环境中,之后无论在哪运行脚本都能直接导入app模块:
pip install -e .
内容的提问来源于stack exchange,提问作者Hofbr
相关产品推荐
相关产品推荐

