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

运行子目录中的Python文件时导入自定义模块出现ModuleNotFoundError(No module named 'planet')的解决方法

解决Python模块找不到的问题:ModuleNotFoundError: No module named 'planet'

这个问题的核心原因是:当你在planet/scheduler目录下直接运行collect_candidate.py时,Python的模块搜索路径(sys.path)里并没有包含planet所在的父目录,所以它无法识别planet作为顶层包。

下面给你几种实用的解决方法,按推荐程度排序:

方法1:从项目根目录的父目录运行(最规范推荐)

首先,导航到包含planet文件夹的那个目录(也就是planet的父目录,比如如果你的planet在/home/you/projects/planet,就进入/home/you/projects),然后用Python的模块运行方式执行脚本:

python3 -m planet.scheduler.collect_candidate

这里的-m参数会把当前目录自动加入sys.path,让Python能够正确找到planet这个顶层包,这也是Python官方推荐的包内脚本运行方式。

方法2:临时设置PYTHONPATH环境变量

如果你习惯在planet/scheduler目录下运行脚本,可以在执行前把项目根目录(planet的父目录)添加到PYTHONPATH中:

  • Linux/macOS:
    export PYTHONPATH=/path/to/planet/parent/directory && python3 collect_candidate.py
    
  • Windows(命令提示符):
    set PYTHONPATH=C:\path\to\planet\parent\directory && python collect_candidate.py
    
  • Windows(PowerShell):
    $env:PYTHONPATH = "C:\path\to\planet\parent\directory"; python collect_candidate.py
    

这个方法适合临时测试,每次运行前需要设置环境变量(或者你可以把这个命令写到shell脚本/bat脚本里)。

方法3:在脚本中手动添加模块搜索路径

你可以在collect_candidate.py的最开头添加一段代码,把项目根目录加入Python的搜索路径:

import sys
import os

# 获取项目根目录(planet文件夹的父目录)
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))
sys.path.append(project_root)

# 现在可以正常导入模块了
from planet.db.mysqldb_handler import MysqlDBHandler

这段代码会自动计算出项目根目录的绝对路径,并把它加入sys.path,这样无论你从哪个目录运行脚本,都能找到planet包。缺点是如果后续目录结构发生变化,可能需要调整这段路径计算的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 09:07:33