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。

相关推荐
@蓝莓果粒茶28 分钟前
LeetCode第350题_两个数组的交集II
c++·python·学习·算法·leetcode·职场和发展·c#
FinAnalyzer42 分钟前
如何在 InsCodeAI 上搭建并使用 Jupyter Notebook 环境?
ide·python·jupyter
java1234_小锋44 分钟前
【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-文章分类下拉框实现
python·自然语言处理·flask
檀越剑指大厂44 分钟前
【Python系列】Flask 应用中的主动垃圾回收
开发语言·python·flask
檀越剑指大厂1 小时前
【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
开发语言·python·flask
WXX_s1 小时前
【OpenCV篇】OpenCV——03day.图像预处理(2)
人工智能·python·opencv·学习·计算机视觉
Jackilina_Stone2 小时前
【论文|复现】YOLOFuse:面向多模态目标检测的双流融合框架
人工智能·python·目标检测·计算机视觉·融合
双叶8363 小时前
(Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)
开发语言·windows·python
枫昕柚3 小时前
python
开发语言·python
木头左3 小时前
自动驾驶领域中的Python机器学习
python·机器学习·自动驾驶