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

运行Python包内文件时出现ModuleNotFoundError的问题咨询

解决Python模块跨场景导入冲突的方案

针对你遇到的「运行main.py和直接运行src/logger.py时导入语句冲突」的问题,给你三个实用的解决思路:

方案一:使用相对导入

在src/logger.py里把导入语句改成相对导入格式:

from .util import *
  • 运行main.py时:从项目根目录启动的场景下,相对导入能正确识别同目录的util.py,不会报错。
  • 直接运行src/logger.py时:需要用模块方式启动脚本,在项目根目录下执行命令:
    python -m src.logger
    
    这样Python会把根目录当作包的根路径,相对导入就能正常工作,避免ModuleNotFoundError。

方案二:动态添加项目根目录到Python路径

在src/logger.py的最顶部添加以下代码,动态将项目根目录加入Python的搜索路径:

import sys
import os

# 获取当前脚本所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 项目根目录是当前目录的上层目录
project_root = os.path.dirname(current_dir)
# 若根目录不在搜索路径中则添加
if project_root not in sys.path:
    sys.path.append(project_root)

# 之后使用绝对导入即可
from src.util import *

这样不管是直接运行src/logger.py,还是通过main.py导入,Python都能找到src包,两种场景下都不会报错。

方案三:将项目安装为可编辑包

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

from setuptools import setup, find_packages

setup(
    name="your-project-name",
    version="0.1",
    packages=find_packages(),
)

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

pip install -e .

之后不管是运行main.py还是直接运行src/logger.py,Python都会把src识别为已安装的标准包,from src.util import *的导入语句在两种场景下都能正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 23:44:56