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。

相关推荐
jufeng130710 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 11 篇】
python·ai agent·mcp
En^_^Joy11 小时前
Django项目配置全攻略:settings配置文件
后端·python·django
for_ever_love__11 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
AC赳赳老秦12 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
麻雀飞吧13 小时前
零基础选量化工具,先把问题说清楚
人工智能·python
段一凡-华北理工大学13 小时前
AI推动工业智能化转型~系列文章20:工业 AI 平台架构:云-边-端协同的技术体系
人工智能·python·架构·工业平台·云-边协同
CodeBlog-star13 小时前
Harness Engineering:Pi Agent 架构深度解析
人工智能·python·架构·harness工程
简不变13 小时前
将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件
python
AC赳赳老秦14 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw