图文详解Python如何导入自己编写的py文件

 更新时间:2021年11月21日 16:29:43   作者:正直的阿康  
有时候自己写了一个py文件,想要把它导入到另一个py文件里面,所以下面这篇文章主要给大家介绍了关于Python如何导入自己编写的py文件的相关资料,需要的朋友可以参考下

一. 想要实现的效果

新建文件夹将自编模块集中管理

可在其它py文件内import 自编模块,像import第三方库一样

二. 实现的方法

步骤1:将编号的模块 *.py放入文件夹,在我计算机中是:F:\OneDrive\PythonPrj\_myFunction

image-20211119224257504

步骤2:新建用户/系统环境变量。

变量名:PYTHONPATH

变量值:文件夹路径

image-20211119224404777

然后就可以实现想要的效果了,以下三种import方式均可。

image-20211119224828709

这样做的原理是,Python解释器会去以下三个位置找import的模块:

  1. 当前文件所在目录
  2. 环境变量PYTHONPATH指定的目录
  3. Python 默认的安装目录

Python中sys.path变量记录了解释器可Import模块的位置,如下图所示:

image-20211120095537867

所以,可通过操作sys.path变量告诉解释器去哪里找模块,代码如下:

image-20211120100202979

sys.path是个列表,这里用append将一个路径加到了列表中,然后此路径下的模块a就能成功导入了。这种方法多写了两行代码,不方便,所以只适合临时用一下。

三. 进阶用法

如果自编的模块多了,或者想给自编模块加上说明文档的话,还是希望将每个自编模块单独存放在一个文件夹,以便于管理维护。像这样:

image-20211119225158325

然后在文件夹(如myPackage1)内存放自编模块。

image-20211119225530542

这时想导入模块就要按照以下写法:

image-20211119225614872

这是一级子文件夹的写法,更多级文件夹可以一直点(.)下去。当然,一般也就会用到一级子文件夹,二级几乎都不会使用。

四. 使用_init_.py控制导入某文件夹时执行的操作

上述的导入方式一次只能导入一个文件夹里的一个模块,如果想控制一次导入文件夹中的所有模块,而不用一个个用点号去点,我们需要用到_init_.py文件。

此文件需要与模块在同一目录中,如下图所示,Python中将拥有_init_.py文件的文件夹称为包。

image-20211120203743739

每次import myPackage1时,_init.py会自动执行一次,所以也称为包初始化文件。利用这个特性,我们可以在此文件中写一些代码,用来控制导入文件夹myPackage1时的行为。像这样写这个初始化文件:

import sys# 将__init__.py文件所在目录加入Python搜索目录中,否则会提示找不到myModule1sys.path.append(__file__[:-12])import myModule1

然后,在其它py文件中导入myPackage1,因为_init_.py文件自动执行,myModule1文件会自动被导入。验证一下:

image-20211120204848195

当然,即使在包初始化文件里写了import 某模块,还是可以用 import myPackage1.myModule 这样的方式来导入。包初始化文件不会对原本的导入方式有任何影响。

另一种写法,可以一次导入包中某模块中定义的函数和属性,像这样写_init_.py文件:

import sys
# 将__init__.py文件所在目录加入Python搜索目录中,否则会提示找不到myModule1
sys.path.append(__file__[:-12])

import myModule1

然后,在其它py文件导入时这么写:

image-20211120205627292

可见,可以直接使用myModule1中的定义的函数了。

总结一下,导入模块的写法与_init_.py的写法需要保持一致,即要么都import 包名,要么都from 包名 import *,这样才可达到想要的效果。

我对Python理解还不够深入,仅将摸索出来的一些规律分享出来。

总结

到此这篇关于Python如何导入自己编写的py文件的文章就介绍到这了,更多相关Python导入编写的py文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python正则表达式分组概念与用法详解

    Python正则表达式分组概念与用法详解

    这篇文章主要介绍了Python正则表达式分组概念与用法,结合具体实例形式较为详细的分析了Python正则表达式中分组、引用、断言等概念与相关使用技巧,需要的朋友可以参考下
    2017-06-06
  • python 协程 gevent原理与用法分析

    python 协程 gevent原理与用法分析

    这篇文章主要介绍了python 协程 gevent原理与用法,结合实例形式分析了Python协程gevent相关概念、原理、安装及使用操作技巧,需要的朋友可以参考下
    2019-11-11
  • Win10下python 2.7.13 安装配置方法图文教程

    Win10下python 2.7.13 安装配置方法图文教程

    这篇文章主要为大家详细介绍了Win10下python 2.7.13 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python Matplotlib条形图之垂直条形图和水平条形图详解

    Python Matplotlib条形图之垂直条形图和水平条形图详解

    这篇文章主要为大家详细介绍了Python Matplotlib条形图之垂直条形图和水平条形图,使用数据库,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • python类名和类方法cls修改类变量的值

    python类名和类方法cls修改类变量的值

    这篇文章主要介绍了python类名和类方法cls修改类变量的值,通过类对象是无法修改类变量的值的,本质其实是给类对象新添加 name 和 age 变量,下文更多的相关介绍需要的小伙伴可任意参考一下
    2022-04-04
  • 在Django中进行用户注册和邮箱验证的方法

    在Django中进行用户注册和邮箱验证的方法

    这篇文章主要介绍了在Django中进行用户注册和邮箱验证的方法的相关资料,需要的朋友可以参考下
    2016-05-05
  • 如何利用Python将html转为pdf、word文件

    如何利用Python将html转为pdf、word文件

    网络上存在很多将HTML转换为PDF的软件和工具,但是大家都知道收费,所以下面这篇文章主要给大家介绍了关于如何利用Python将html转为pdf、word文件的相关资料,文中通过示例代码介绍介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Python加载文件内容的两种实现方式

    Python加载文件内容的两种实现方式

    这篇文章主要介绍了Python加载文件内容的两种实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • django中celery的定时任务使用

    django中celery的定时任务使用

    这篇文章主要介绍了django中celery的定时任务使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python中常用的内置函数

    Python中常用的内置函数

    这篇文章主要介绍了Python中常用的内置函数,主要介绍内容有map()、filter()、all()、int()等更多相关函数,需要的小伙伴可以参考一下
    2022-04-04

最新评论