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

Python跨脚本导入函数报错:ModuleNotFoundError问题求助

Python跨脚本导入函数报错:ModuleNotFoundError问题求助

嘿,我来帮你搞定这个模块导入的问题!先理清你的目录结构和当前问题的根源:

你的目录层级是:

.root
├── program
│   └── main.py
└── functions
    └── myfunctions.py

你之前把PYTHONPATH设为./root/functions,这其实是问题的核心——Python会在PYTHONPATH指定的路径下查找你要导入的模块/包,现在你把路径指向了functions目录本身,Python就会在这个目录里找名为functions的模块,可这里只有myfunctions.py,自然会报找不到的错误。

给你几个可行的解决方案,选适合你的就行:

方案1:修正PYTHONPATH环境变量

把PYTHONPATH设置为你的root目录(也就是包含program和functions的父目录),这样Python就能识别到functions是一个合法的包目录。

  • 如果是Linux/macOS终端,临时设置可以用:
    export PYTHONPATH="/path/to/your/root"
    
  • 如果是Windows命令行:
    set PYTHONPATH=C:\path\to\your\root
    

设置完成后,你原来的导入语句from functions import myfunctions as func就能正常工作了。

方案2:在main.py中动态添加路径

如果不想修改环境变量,可以在main.py的最开头添加代码,把root目录加到Python的搜索路径里:

import sys
import os

# 获取当前main.py文件的绝对路径,再往上找一级就是root目录
root_directory = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root_directory)

# 现在就能正常导入了
from functions import myfunctions as func

这种方法的好处是不需要依赖环境变量,代码本身就能处理路径问题,移植性更强。

额外小提醒

虽然Python 3.3+支持无__init__.py的命名空间包,但如果导入还是有问题,可以在functions目录下创建一个空的__init__.py文件,帮Python明确识别这是一个包目录。

备注:内容来源于stack exchange,提问作者Pedro Alves

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:43:05