Python导入自定义模块与外部文件的5种方法及路径配置详解
本文详细解析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引入自定义模块和外部文件的实例分享完毕,希望能为读者提供参考,并感谢大家的支持。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









