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

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

本文详解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 相关产品和应用

全部下载

专题列表