Python如何导入自己编写的py文件
时间:2022-09-02 22:30:01
一. 想要达到的效果
-
新文件夹集中管理自编模块
-
可在其它py文件内import 自编模块,像import第三方库是一样的
二. 实现的方法
步骤1:将编号的模块 *.py在我的夹放入我的计算机中:F:\OneDrive\PythonPrj\_myFunction
步骤2:新用户/系统环境变量。
变量名:PYTHONPATH
变量值:文件夹路径
然后可以达到预期的效果,以下三种import方式均可。
这样做的原则是,Python解释器将在以下三个位置找到import的模块:
- 当前文件所在目录
- 环境变量PYTHONPATH指定的目录
- Python 默认安装目录
Python中sys.path解释器可以记录变量Import如下图所示:
因此,可以操作sys.path代码如下:
sys.path这里用的是列表append在列表中添加一条路径,然后在此路径下成功导入模块a。这种方法写了两行代码,不方便,只适合临时使用。
三. 进阶用法
如果有更多的自编模块,或者想在自编模块中添加解释文档,您仍然希望将每个自编模块单独存储在文件夹中,以便于管理和维护。
然后在文件夹(如myPackage1)存储自编模块。
此时,如果您想导入模块,请遵循以下写法:
这是一级子文件夹的写法,更多级别的文件夹可以一直点击(.)当然,一级子文件夹一般使用,二级几乎不使用。
四. 使用_init_.py控制导入文件夹时执行的操作
以上导入方法一次只能导入文件夹中的一个模块。如果我们想控制一次导入文件夹中的所有模块,而不是使用点号,我们需要使用它_init_.py文件。
该文件需要与模块在同一目录中,如下图所示,Python中将拥有_init_.py文件夹称为包。
每次import myPackage1时,_init.py会自动执行一次,所以也叫包初始化文件。利用这一特性,我们可以在本文件中编写一些代码来控制导入文件夹myPackage1.行为。写这样的初始化文件:
import sys # 将__init__.py加入文件目录Python在搜索目录中,否则会提示找不到myModule1 sys.path.append(__file__[:-12]) import myModule1
然后,在其他地方py文件中导入myPackage1,因为_init_.py自动执行文件,myModule文件将自动导入。
当然,即使包的初始化文件是写的import 模块,还是可以用的 import myPackage1.myModule 以这种方式导入。包初始化文件不会对原始导入模式产生任何影响。
另一种写法,可以一次导入包中某模块中定义的函数和属性,像这样写_init_.py文件:
import sys # 将__init__.py加入文件目录Python在搜索目录中,否则会提示找不到myModule1 sys.path.append(__file__[:-12]) from myModule1 import *
然后,在其他地方py导入文件时这样写:
可见,可直接使用myModule1中定义的函数。
总结一下,导入模块的写法和_init_.py写法要一致,即要么都import 包名,或全部from 包名 import *,这样才能达到预期的效果。
我对Python理解还不够深入,只分享一些探索出来的规则,希望能有所帮助。如,请评论指出。