pyforest会延迟导入所有流行的Python数据科学库,这样当你需要它们时,它们总是在那里。如果你不使用一个库,它将不会被导入。当你完成你的脚本之后,你可以导出导入语句的Python代码。
Jupyter Notebook中的演示
Python Shell中的演示
使用pyforest
Pyforest会使用一行代码延迟导入所有流行的Python数据科学库:
如果你使用的是Jupyter或IPython,你甚至可以跳过这一行,因为pyforest会将自己添加到自动启动中。
当你完成你的脚本时,你可以通过以下命令导出所有的导入语句:
哪些库是可用的?
我们的目标是添加所有流行的Python数据科学库,它们应该占你日常导入的>99%。例如,导入pandas为pd, numpy为np, seaborn为sns, matplotlib.pyplot为plt,或者来自sklearn的OneHotEncoder等等。此外,还有一些辅助模块,如os、re、tqdm或 来自pathlib的Path。
如果你在Python中键入lazy_imports(),你可以看到所有可用的延迟导入的一个总览。
如果你错过了一个导入,你可以将其添加到pyforest导入中。
为了收集所有最重要的名字,我们需要你的帮助。请创建一个合并申请并添加我们仍然缺少的导入。
安装
你需要Python 3.6或更高版本,因为我们喜欢f-strings。
在终端中输入:
pip install pyforest
这样你就准备好了。
请注意,此命令还会将pyforest添加到你的IPython的默认启动设置中。
常见问题
“我需要始终在我的脚本顶部明确地写下我所使用的库。”
○ 当然,你可以使用active_imports()导出所有使用过的库的导入语句。
“这不会减慢我的Jupyter或Python的启动过程吗?”
○不会,因为这些库只有在实际使用时才会被导入。在使用它们之前,像pd这样的变量只是pyforest占位符。
“为什么我不能使用典型的IPython导入?”
○如果你要添加pyforest包含的所有库,你的启动时间可能要超过30秒。
“我没有,也不需要tensorflow。当我使用pyforest时会发生什么?”
○Tensorflow是包含在pyforest中的,但pyforest不会安装任何依赖项。你需要将库与pyforest分开安装。然后,如果这些库包含在pyforest导入中,那你可以通过pyforest访问它们。
"pyforest变量会干扰我自己的局部变量吗?”
○请确保你是在脚本的开头导入pyforest。这样你就永远是安全的。你可以像没有pyforest一样使用你的变量。最糟糕的情况是你覆盖了一个pyforest占位符,这样你就无法再使用该占位符了(不然呢)。
“延迟导入模块的自动完成功能如何?”
○它可以工作:)一旦你开启了自动完成,pyforest将导入模块并将可用的符号返回给你的自动完成程序。
“如何(暂时)停用IPython和Jupyter中的auto_import ?”
○进入~/.ipython/profile_default/startup目录,调整或删除pyforest_autoimport.py文件。你会在该文件中找到进一步的说明。
“如何(重新)激活pyforest auto_import?”
○在Jupyter、IPython或Python中执行以下Python命令:from pyforest.auto_import import setup; setup()。请注意auto_import只适用于Jupyter和IPython。
“为什么pandas_profiling也被导入到了演示中?”
○pyforest支持互补的、可选的导入。例如,pandas_profiling使用便捷函数df.profile_report修补了pd.DataFrame。因此,如果你安装了pandas_profiling, pyforest也会导入它。如果你没有安装pandas_profiling,pyforest将跳过可选导入。
“我不想把补充的导入语句复制到我的文件的顶部。”
○请注意,补充导入总是出现在import_statements列表的底部。你可以只复制上面的所有语句。或者,你可以禁用补充导入。
“如何禁用补充导入?”
○你可以取消pyforest导入文件底部的 *. _on_import__()语句的注释。
“为什么这个项目叫做pyforest?”
○Pandas存活在哪个生态系统中呢?
贡献
为了收集所有最重要的库名称,我们需要你的帮助。请创建一个合并申请并将我们仍然缺少的导入添加到pyforest导入中。你还可以在pyforest导入文件中找到指导原则。
作为包开发人员使用pyforest
pyforest可以帮助你最小化你的包的(初始)导入时间,从而改善用户体验。如果你希望你的包导入变得延迟,请按照下面重写你的导入:
使用
替换
关于
pyforest是由Florian、Tobias和来自8080实验室的Guido共同开发的。我们的目标是提高Python数据科学家的工作效率。我们正在进行的其他项目是edaviz和bamboolib。
加入我们社区继续成长
如果你
喜欢我们的项目或
想成为一个更快速的Python数据科学家或
想讨论Python数据科学生态系统的未来或
只是对和志趣相投的人交往感兴趣
那么,请加入我们的聊天群组。
英文原文:https://github.com/8080labs/pyforest
译者:野生大熊猫