You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入时出现ModuleNotFoundError:问题原因及解决方法

ModuleNotFoundError: No module named 'app_1' 的原因与解决办法

问题原因

  1. 模块搜索路径不包含项目根目录:当直接运行app_2/file_B.py时,Python会自动将app_2所在目录加入模块搜索路径(sys.path),但包含app_1的项目根目录不在这个路径列表里,导致Python无法识别app_1这个顶级包。
  2. 包结构识别问题:如果app_1或app_2目录下缺少__init__.py文件(Python 3.3+支持无此文件的命名空间包,但部分场景下仍需该文件明确标识包结构),也可能导致Python无法将其识别为可导入的包。

解决办法

方法1:手动添加项目根目录到搜索路径

在file_B.py的最开头添加代码,将项目根目录加入sys.path:

import sys
import os

# 获取项目根目录(file_B在app_2下,根目录是它的上一级目录)
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_root)

# 现在可以正常导入
from app_1.file_A import function

方法2:使用相对导入(需以包方式运行)

修改file_B.py的导入语句为相对导入格式:

from ..app_1.file_A import function

注意:不能直接运行file_B.py,必须回到项目根目录,用模块方式执行:

python -m app_2.file_B

方法3:通过环境变量设置PYTHONPATH

在终端中先将项目根目录添加到PYTHONPATH,再运行脚本:

  • Linux/macOS:
export PYTHONPATH="/绝对路径/MyProject:$PYTHONPATH"
python app_2/file_B.py
  • Windows(CMD):
set PYTHONPATH=C:\绝对路径\MyProject;%PYTHONPATH%
python app_2\file_B.py
  • Windows(PowerShell):
$env:PYTHONPATH = "C:\绝对路径\MyProject;$env:PYTHONPATH"
python app_2\file_B.py

方法4:将项目安装为可编辑包(适合长期开发)

在项目根目录下创建setup.py文件,内容如下:

from setuptools import setup, find_packages

setup(
    name="MyProject",
    version="0.1.0",
    packages=find_packages()
)

然后在根目录执行命令,将项目安装为可编辑模式:

pip install -e .

安装完成后,你可以在任何位置正常导入app_1模块。

内容的提问来源于stack exchange,提问作者Etozeigor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:12:36