Python导入自定义模块与外部文件的5种方法及路径配置详解

顾言
顾言
发布时间:2026-10-13 | 3人浏览过
原创

本文详细解析Python中导入自定义模块和外部文件的多种方法。涵盖同目录直接引入、子目录包结构(__init__.py)、跨文件夹调用、系统site-packages部署以及.pth环境变量配置。重点讲解如何通过动态修改sys.path或静态配置.pth文件来扩展Python的模块搜索路径,解决外部代码引用问题。

在开发过程中,经常需要复用历史代码或满足特定需求而引入外部包。

若基于Web框架如Django,可将需导入的代码写入新建的app中,并在setting文件里注册该app,通常即可正常运行。

对于本地代码环境,存在以下几种处理方案:

第一种方式最为简单,但实用性可能较低。只需将外部文件放置在与调用文件相同的包目录下,即保持同一目录结构。

目录结构示例如下:

------toinvoke.py

------tobeinvoded.py

此时,在toinvoke.py文件中可通过以下方式引入:

import toveinvoked 或 from tobeinvoked import *

即可完成导入。

第二种情况涉及非单文件结构,或无法置于同一目录下的代码,它们位于不同的子目录中。

目录结构示例:

------tobeinvodedA.py

------tobeinvodedB.py

------tobeinvodedC.py

toinvoke.py

此时,需在folder目录下新建一个空的__init__.py文件。此举将folder从普通文件夹转换为Python包(package)。

转换后的目录结构如下:

folder #文件夹 现在的性质为一个python包package

------__init__.py

------tobeinvoked.py

------tobeinvokedA.py

------tobeinvokedB.py

------tobeinvokedC.py

在toinvoke.py中,可通过以下方式引入:

import folder.toveinvoked 或 from folder.tobeinvoked import *

即可完成导入。

第三种情况同理,若folderB中的模块需调用folderA中的模块,方法同上,具体差异已显而易见。

目录结构示例:

------tobeinvoded.py

------tobeinvodedA.py

------tobeinvodedB.py

------tobeinvodedC.py

folderB

--------toinvoke.py

在toinvoke.py中,可通过以下方式引入:

import folder.toveinvoked 或 from folder.tobeinvoked import *

即可完成导入。

第四种方法是将待调用代码拷贝至$PYTHONHOME$\Lib\site-packages目录下,其原理类似于Eclipse插件的安装方式。

第五种方法是在$PYTHONHOME$\Lib\site-packages目录下新建一个.pth文件,例如MyPackage.pth。文件内容应包含包的绝对路径,如:E:/PythonPrj。

通过这种方式,E:/PythonPrj下的所有包均可按照其相对路径进行引入,原理类似于Eclipse插件安装的link方式。

第六种方法与上述类似,也可通过添加环境变量实现,此处不再赘述。

总结:了解Python的包搜索路径至关重要。

Python会在以下路径中搜索所需模块:

1. 程序所在的文件夹

2. 标准库的安装路径

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

若要将自定义库路径添加到Python的库路径中,主要有两种方法:

1. 动态添加库路径。在程序运行过程中修改sys.path的值,手动添加自己的库路径。

import sys

sys.path.append(r'your_path')

2. 在Python安装目录下的\Lib\site-packages文件夹中建立.pth文件,内容指定为自定义库路径。示例如下:

E:\\work\\Python\\http

E:\\work\\Python\\logging

以上关于Python引入自定义模块和外部文件的实例分享完毕,希望能为读者提供参考,并感谢大家的支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表