使用 pyflyby
自动管理导入包¶
在编写 Python
代码时,尤其是在构建复杂的项目时,你是否遇到过这些问题:
-
忘记
import
某个包了; -
import
了很多包,但不知道哪些是可以删掉的?
在 Python
开发过程中,我们经常需要导入一些第三方包或自定义的模块。但是,手动导入这些包和模块有时候会变得非常繁琐和冗长。由 D. E. Shaw group 贡献的开源工具 pyflyby
可以自动为我们管理这些导入,帮助我们轻松解决这些问题!
安装 pyflyby
¶
如果你还没有安装过 ipython
,那么也需要安装它:
在 IPython/Jupyter Notebook
中使用¶
如果只是对单个文件使用,可以在一个单元格中运行:
如果想要对今后所有文件使用,可以在终端中输入下面的命令进行配置:
Autoimporter + IPython
¶
下面的代码依赖于 numpy
、matplotlib
和 scipy
,我们在没有导入任何依赖的情况下运行它:
pyflyby
自动为我们检查出了需要导入的包,并帮我们导入,然后成功运行了代码。
我们可以将红框中的代码复制到单元格中(记得把 [PYFLYBY]
删去),就可以补充导入包的依赖了。
如果你使用 JupyterLab,还可以配合 jupyterlab-pyflyby 自动在第一个单元格插入应该补全的代码。由于我不使用 JupyterLab,因此我没有进行测试。下面的动图展示了使用效果:
tidy-imports
¶
对于 .py
脚本,可以使用命令行:
pyflyby
会在命令行中显示应该补充的导入语句,并且可以通过输入 y
或 N
来选择是否对源代码进行修改。如果选择 y
,则 pyflyby
会自动为我们在源代码中补充导入语句。
pyflyby
并不能完全准确识别应该导入的包
某些导入的包并不常见,可能并不能被正确识别,因此需要再手动导入。这种情况应该是出现在一些小众、不常用的包上。对于常用的 pd
、np
等数据分析包,应该都是支持的。毕竟 D. E. Shaw 也是顶尖量化对冲基金,想必也经常使用数据分析和科学计算工具。