Python:脚本与包在同一根目录下报错 ModuleNotFoundError: No module named ‘mymodule‘

❗❗chatgpt生成预警

问题

我的文件夹结构如下:

│── mymodule

│ ├── init .py

│ ├── script.py

│ ├── Constants.py

│── main.py

script.py 中,我导入Constants.py里的常数:from Constants import CONST1, CONST2

main.py 中,我在使用from mymodule.script import func时遇到报错:ModuleNotFoundError: No module named 'Constants'

解决方法

您遇到的问题可能是因为在Python中,模块的导入路径是相对于当前运行脚本的位置的。在您的情况中,main.py 试图导入 mymodule.script,而 mymodule.script又试图导入Constants

为了解决这个问题,您可以使用相对导入绝对导入方式:

  • 相对导入:在script.py中,您可以使用相对导入,如下所示:
python 复制代码
from .Constants import CONST1, CONST2

这将告诉Python在当前包(mymodule)下查找Constants模块。

  • 绝对导入:在script.py中,您可以使用绝对导入,如下所示:
python 复制代码
from mymodule.Constants import CONST1, CONST2

这将告诉Python明确从 mymodule 包中导入 Constants 模块。

无论您选择哪种方式,确保您的包和模块的相对结构是正确的,并且 main.py 位于与 mymodule 相同的根目录中。这样,您就不会遇到ModuleNotFoundError的问题。

如果main.py不位于与mymodule相同的根目录中怎么办

如果main.py不位于与mymodule相同的根目录中,您需要确保Python能够找到mymodule模块。有几种方法可以解决这个问题:

  1. 将包含mymodule的目录添加到sys.path:
    在my_script.py的开头,您可以添加以下代码:
python 复制代码
import sys
import os

module_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'mymodule'))
sys.path.append(module_dir)

这将告诉Python在module_dir中查找mymodule包。

  1. 使用相对导入:

    如果您的项目结构允许,您可以使用相对导入。假设您的my_script.py位于与mymodule相同的根目录下,您可以像之前建议的一样使用相对导入。

  2. 设置PYTHONPATH环境变量:

    您还可以通过设置PYTHONPATH环境变量来告诉Python在哪里查找模块。在命令行中执行以下命令:

bash 复制代码
export PYTHONPATH=/path/to/your/root/directory:$PYTHONPATH

或者在Windows命令行中:

batch 复制代码
set PYTHONPATH=C:\path\to\your\root\directory;%PYTHONPATH%

这将允许Python在指定的根目录下查找模块。

选择其中一种方法来适应您的项目结构和需求,以确保Python可以正确找到mymodule。

相关推荐
AC赳赳老秦12 小时前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
茉莉玫瑰花茶13 小时前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai
文艺倾年14 小时前
【强化学习】强化学习基本概念,20W字总结(一)
人工智能·python·语言模型·自然语言处理·面试·职场和发展·大模型
宸丶一14 小时前
Day 13:持久化记忆 - 让 Agent 拥有长期记忆
jvm·python·ai
码云骑士14 小时前
13-列表append的底层真相(上)-listobject源码中的预分配策略
开发语言·python
浦信仿真大讲堂14 小时前
达索系统SIMULIA Abaqus 2026接触和约束的增强新功能介绍
人工智能·python·算法·仿真软件·达索软件
xufengzhu15 小时前
第三方 Python 库 Loguru 的进阶实战
python·loguru
极光代码工作室15 小时前
基于深度学习的手写数字识别系统
人工智能·python·深度学习·神经网络·机器学习
geovindu16 小时前
python: speech to text offline
开发语言·python·语音识别
AI创界者16 小时前
告别云端限制!Sulphur 2 本地文生视频/图生视频整合包,本地部署,解压即用,保姆级部署与工作流实战
人工智能·python·aigc·音视频