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

Python同目录导入version模块报ModuleNotFoundError问题咨询

错误原因

两个核心问题导致导入失败:

  1. 文件名存在命名冲突:version是Python生态中被占用的通用模块名,既存在于部分标准库组件中,也被大量第三方依赖使用。Python导入模块时会按「内置模块 > 搜索路径下按优先级匹配的模块」顺序查找,很容易优先匹配到非自定义的同名模块,触发导入异常。
  2. 模块搜索路径不匹配:Python导入同目录下自定义文件的前提是,脚本所在目录被加入模块搜索路径列表sys.path。如果你执行命令时的工作目录不是main.py和version.py所在的文件夹(比如在其他目录下通过绝对路径调用main.py、PyCharm运行配置的工作目录设置错误),解释器就找不到同目录下的自定义文件。
修复方案

按优先级推荐以下修复方式,优先选第一种可以一劳永逸避免后续打包、分发时出现同类问题:

  • 重命名自定义模块:把version.py改名为不会和公共模块重名的名称,比如cmd_version.py,同步修改main.py里的导入逻辑:
    # main.py 修改后内容
    import cmd_version
    cmd_version.pyVersion()
    
  • 修正运行路径:执行脚本前先通过cd命令进入两个文件所在的cmd tool目录,再执行python main.py;如果用PyCharm运行,打开运行配置,将Working directory设置为两个文件所在的本地目录,保证解释器能定位到自定义模块。
  • 兜底路径配置:如果需要兼容任意工作目录下的脚本调用,可以在main.py的最开头手动将脚本所在目录加入搜索路径,再执行导入:
    # main.py 兜底写法
    import sys
    import os
    # 将当前脚本所在的绝对路径加入模块搜索列表
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    
    import version
    version.pyVersion()
    

额外优化提示:你现在version.py里用os.system("python --version")获取版本的写法稳定性差,会依赖系统环境变量的Python别名,多版本环境下很容易取到错误的版本号,建议直接用标准库获取当前解释器版本:

# version.py 优化后写法
import sys

def pyVersion():
    print(f"当前Python版本:{sys.version.split()[0]}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 19:57:11