分享

import导入太麻烦?一行命令搞定所有库的导入。

 旅行者m1 2023-05-13 发布于辽宁

熟悉python编程的同学都知道,在处理或分析各类数据时,我们经常需要借助Python的内置包或第三方包。在使用这些包之前,我们都需要通过import命令将目标包导入进来,否则会出现“NameError:name *** is not defined”这样的错误。

尽管手动输入import语句并不复杂,但每次开始新的分析任务时都需要重复输入一遍。尤其是当需要的包比较多时,写起来费时费力。

那么,问题来了,有没有办法能够让我们省去繁琐的import语句呢?

答案是有的!这就是本文将要介绍的pyforest库。

简而言之,pyforest是一个python开源库,可以帮助我们自动导入代码中所使用到的所有python库。

这意味着当我们导入pyforest包后,就无需再导入其他所需的包了。

下面,我们就来看看如何安装并使用pyforest包。

安装

与其他包一样,pyforest也是使用pip install的方式进行安装,具体方法如下:

# 指定Python源
pip install pyforest -i https://pypi.tuna./simple

需要注意的是,pyforest包依赖于python 3.6及以上版本。

使用方法

pyforest库的使用非常简单,我们只需要导入该包(无需导入其他包),然后就可以直接进行代码的编写。

# 仅需导入pyforest
import pyforest

# 无需导入以下包
# import numpy as np
# import os
# import pandas as pd
# ...

导入后,我们就可以直接开始编写代码了。

举个栗子。

s = pd.Series([1,3,5,7,9])

s
Image
x = np.arange(-10100.1)
y = np.cos(x)

plt.plot(x, y)
Image

可以看到,我们并没有手工导入numpy, pandas,但是都可以直接使用这些包,是不是很方便?

我们可以查看pyforest支持的库列表。

# 踢除内置的方法或属性
print(len([p for p in dir(pyforest) if not p.startswith('_')]))
Image

列出支持的具体包名。

for p in dir(pyforest):
    if not p.startswith('_'):
        print(p)
Image

可以看到,pyforest支持的库非常多,基本上涵盖了我们日常使用所需要的各种数据科学库,如pandas,numpy,matplotlib,seaborn,sklearn等等,以及常用的内置库os,sys,re等等。

此外,我们还可以查看已导入并且正在使用的库列表。

active_imports()
Image

查看pyforest中所有Python库的列表及导入命令。

lazy_imports()
Image

有的同学会担心,所有的库都添加进来会不会导致很慢?

答案是不会,这是因为pyforest实现的是惰性导入(lazy import),即只有实际使用的库才会被导入,而未被使用过的库根本不会导入进来。这一点我们通过上面active_imports()函数的运行结果就可以看出来。

还有的同学可能会问:如果需要的库不在pyforest中怎么办?

实际上,pyforest支持向其中添加库。操作方法为找到pyforest库的user_imports.py文件(一般在电脑用户主目录下的.forest文件夹下),然后在其中添加对应的语句即可。例如,当我们要添加xlwings库时,方法如下:

# Add your imports here, line by line
# e.g
# import pandas as pd
# from pathlib import Path
# import re
import xlwings

pyforest可谓是懒人的福音,不过笔者在日常工作中使用较少,毕竟使用不当的话可能会导致库的污染或导入库不清晰,也使得代码的可读性下降。

最后,附上pyforest源码的链接。有兴趣研究pyforest库原理的同学们可以去下面的网站进行下载。

https://github.com/8080labs/pyforest

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多