Python导入自定义模块报错的完整解决方案

Mia
Mia
发布时间:2026-10-16| 6人浏览过
原创

本文详解Python导入自定义模块时常见的报错问题及解决方法。针对同目录与跨目录两种场景,分别介绍了在PyCharm中设置Sources Root、通过cmd命令行执行时的路径差异。重点讲解了将模块拷贝至site-packages、创建.pth文件添加搜索路径以及设置根目录等有效方案,确保代码在IDE和命令行环境中均能正常运行。

在实际开发Python项目时,通常会将公共逻辑封装到基础模块中,以便其他模块调用。此时,我们需要通过import语句导入这些自定义的基础模块。

编写好脚本后,导入模块的情况主要分为以下两类:

1. 运行脚本与需要调用的自定义基础模块位于同一文件夹下。

2. 自定义模块与调用该模块的文件位于不同的文件夹下。

一、同一文件夹下的情况

在这种情况下,调用方式较为简单,直接导入模块即可。

from deal_excel import copy_sheetWrite, row_commonWrite
from deal_time import minus_date

然而,此时在PyCharm编辑器中可能会显示报错信息。

但实际运行程序时,并不会报错。

为了消除PyCharm中的报错提示,可以将包或文件夹标记为Sources Root。

设置后,PyCharm中不再显示报错。

在cmd命令行中执行该程序也是成功的。

如果在模块导入语句前加上包名(即存在__init__.py文件的目录)或文件夹名。

from msydwork.deal_excel import copy_sheetWrite, row_commonWrite
from msydwork.deal_time import minus_date

此时PyCharm中显示不报错,且程序运行成功。

但是在cmd命令行中运行却会失败。

因此,对于处于同一文件夹下的情况:直接导入模块;若希望PyCharm中不报错,需将包或文件夹设为Sources Root。

二、处于不同文件夹下的情况

在PyCharm中不会报错且执行成功,是因为将deal_excel、deal_time所在的包设为了Sources Root:

此时在cmd命令行中执行会失败。

在PyCharm中不报错且执行成功的另一种方法:导入时使用全路径(无需设置Sources Root)。

此时在cmd命令行中也会报错。

为了让代码在cmd命令行中执行成功,需要将自定义基础模块所在的文件夹或包添加到Python的库路径中。

三、找到本地库的路径,然后将文件拷贝进去即可

将模块文件拷贝到\Lib\site-packages目录中。

此时PyCharm中不会报错且执行成功。

在cmd命令行中执行也成功。

四、手动给Python添加搜索路径

在Python安装目录的\Lib\site-packages文件夹中创建一个.pth文件,内容为自己写的库的绝对路径。

此时PyCharm中会报错,但程序执行是成功的。

在cmd命令行中执行也是成功的。

还有一种方法导入完整路径:

将根目录设为搜索路径。

此时无论是在PyCharm还是cmd中执行都是成功的。

因此,对于处于不同文件夹下的情况:先手动给Python添加搜索路径(根目录),然后直接导入模块全路径。

这里补充说明Python的包搜索路径机制。

Python会在以下路径中搜索其想要寻找的模块:

1. 程序所在的文件夹。

2. 标准库的安装路径。

3. 操作系统环境变量PYTHONPATH所包含的路径。

以上为个人经验总结,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。