跳转到主要内容

自动导入IPython中缺失的模块。

项目描述

GitHub PyPI Build

自动导入IPython中缺失的模块:而不是

In [1]: plt.plot([1, 2], [3, 4])
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-994ba2bf13c0> in <module>()
----> 1 plt.plot([1, 2], [3, 4])

NameError: name 'plt' is not defined

In [2]: from matplotlib import pyplot as plt

In [3]: plt.plot([1, 2], [3, 4])
Out[3]: [<matplotlib.lines.Line2D at 0x7f73f0179198>]

按我的意思做

In [1]: plt.plot([1, 2], [3, 4])
Autoimport: from matplotlib import pyplot as plt
Out[1]: [<matplotlib.lines.Line2D at 0x7f7e253552b0>]

灵感来源于@OrangeFlash81的版本,并做了许多改进

  • 不依赖于重新执行,而是钩子用户命名空间;因此,即使在存在副作用的情况下也是安全的,并且对tab补全和魔法也有效。

  • 从历史记录中学习您喜欢的别名 - plt 并非硬编码为matplotlib.pyplot的别名,只是因为您之前已使用该别名导入过pyplot

  • 抑制无关的链式回溯。

  • 自动导入子模块。

  • pip-安装。

要查看当前会话的自动导入: %autoimport -l

要清除具有多个可能导入的符号的缓存: %autoimport -c SYMBOL

安装

像往常一样,使用pip安装

$ pip install ipython-autoimport  # from PyPI
$ pip install git+https://github.com/anntzer/ipython-autoimport  # from Github

然后,将python -m ipython_autoimport的输出追加到由ipython profile locate打印的目录中的ipython_config.py文件(通常为~/.ipython/profile_default/)。如果您根本没有任何这样的文件,请首先使用ipython profile create创建它。

当使用Spyder时,上述注册方法将不会生效;相反,将%load_ext ipython_autoimport添加到首选项 → IPython控制台 → 启动 → 运行代码选项。

注意,在加载时,ipython_autoimport 将将其子模块自动导入器注册到 IPython 的“有限评估”补全策略(在支持此功能的 IPython 版本中)。

使用 pytest 运行测试。

限制

以下构造

class C:
   auto_imported_value

将无法工作,因为它们是使用类局部变量(而不是修补的局部变量)运行的;修补全局变量不会工作,因为 LOAD_NAME 使用 PyDict_GetItem 精确查询全局变量(注意,它使用 PyObject_GetItem 查询局部变量;此外,LOAD_GLOBALS 使用 PyObject_GetItem 查询全局变量和内置变量,所以我们可能可以通过修补内置字典来避免这种情况,但这似乎有些过于侵入性……)。

当使用 Jedi 自动补全(从 IPython 7.2 开始,如果 Jedi 已安装,则为默认设置)时,尝试使用 Tab 补全尚未导入的全局变量以触发导入失败,因为 Jedi 故意将全局字典转换为命名空间对象,并使用 getattr_static 查找属性。可以通过向 ipython_config.py 文件中添加 c.Completer.use_jedi = False 来禁用 Jedi。

变更日志

v0.5

  • 避免在退出 IPython≥8.15 时出错。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

ipython_autoimport-0.5.tar.gz (9.0 kB 查看散列)

上传时间

构建分发

ipython_autoimport-0.5-py3-none-any.whl (7.1 kB 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面