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

Python跨目录导入模块失败:找不到GameFunctions模块

解决不同目录下Python自定义模块导入失败的问题

你遇到的问题本质是Python解释器的模块搜索路径默认不包含上级目录,编辑器能识别是因为它自动把项目根目录加入了搜索索引,但运行时Python不认。下面是几种实用的解决办法:

方法1:临时添加上级目录到sys.path(快速测试用)

在game.py开头加上这段代码,把GameFunctions所在的上级目录手动加入Python的搜索路径:

import sys
from pathlib import Path

# 获取当前脚本的上级目录(也就是GameFunctions所在的目录)
parent_dir = str(Path(__file__).parent.parent)
if parent_dir not in sys.path:
    sys.path.append(parent_dir)

# 现在就能正常导入了
from GameFunctions import *

这种方法不需要改目录结构,适合临时调试,但代码耦合性稍高。

方法2:把目录转为Python包(规范推荐)

这是更专业的做法,适合长期维护的项目:

  1. 在GameFunctions所在的根目录(也就是etc的上级目录)创建一个空的__init__.py文件,让这个目录成为Python可识别的包。
  2. 根据运行方式选择导入方式:
    • 如果从根目录运行脚本(比如执行python -m etc.game),可以用相对导入:
      from ..GameFunctions import *
      
    • 或者用绝对导入(把根目录加入sys.path后):
      from your_package_name.GameFunctions import *
      
      这里的your_package_name就是根目录的名字,比如你的项目根目录叫tes,就写from tes.GameFunctions import *。

方法3:设置PYTHONPATH环境变量(全局生效)

把GameFunctions所在的目录加入系统的PYTHONPATH环境变量,这样所有Python脚本都会自动搜索这个目录:

  • Windows:
    命令行临时生效:
    set PYTHONPATH=D:\Projects\MyScripts\PYTHON\Test\tes
    
    永久生效:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,新增PYTHONPATH变量,填入目标目录路径。
  • Linux/macOS:
    命令行临时生效:
    export PYTHONPATH=/path/to/your/root/directory
    
    永久生效:把上述命令加入~/.bashrc或~/.zshrc文件,重启终端后生效。

补充:为什么编辑器能识别但运行报错?

VS Code、PyCharm这类编辑器会自动扫描项目根目录,把它加入代码提示的搜索路径,所以能识别到模块;但Python解释器运行时只会使用默认的sys.path(当前脚本目录、标准库目录等),两者的搜索逻辑不一样,就会出现这种“编辑器认、运行报错”的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 03:50:23