进入 python 或 ipython 解释器时自动导入模块

几乎每次启动 python 解释器时,我都会键入 import numpy as np。如何设置 python 或 ipython 解释器,以便自动导入 numpy?

44921 次浏览

使用环境变量 PYTHONSTARTUP。官方文件:

如果这是可读文件的名称,则 在以交互方式显示第一个提示之前执行 该文件在交互式的 命令的执行,以便其中定义或导入的对象可以 在交互式会话中无限制地使用。

因此,只需创建一个带 import 语句的 python 脚本,并将环境变量指向它。话虽如此,请记住“显式总是比隐式好”,所以不要依赖于这种行为的生产脚本。

有关 Ipython,请参阅关于如何创建 Ipython _ config 文件的 这个教程

对于 ipython,有两种方法可以实现这一点。两种方法都涉及到位于 ~/.ipython中的 ipython 的配置目录。

  1. 创建自定义的 ipython 配置文件。
  2. 或者可以向 ~/.ipython/profile_default/startup/添加启动文件

为了简单起见,我使用选项2。您所要做的就是在 ~/.ipython/profile_default/startup目录中放置一个 .py.ipy文件,它就会自动执行。因此,您可以简单地将 import numpy as np放在一个简单的文件中,并且将 np 放在 ipython 提示符的名称空间中。

选项2将实际使用自定义配置文件,但使用自定义配置文件将允许您根据特定情况更改启动要求和其他配置。但是,如果您希望 一直都是这样的 np对您可用,那么请务必将它放在启动目录中。

有关 ipython 配置的更多信息,请参见 医生

我使用的 ~/. startup.py 文件如下:

# Ned's .startup.py file
print("(.startup.py)")
import datetime, os, pprint, re, sys, time
print("(imported datetime, os, pprint, re, sys, time)")


pp = pprint.pprint

然后定义 PYTHONSTARTUP = ~/. startup.py,Python 将在启动 shell 时使用它。

Print 语句就在那里,所以当我启动 shell 时,我会得到一个提示: 它已经生效,并且已经导入了什么。pp的快捷方式也很方便..。

正如 Ravenac95在他的 回答中提到的,您可以创建自定义配置文件或修改默认配置文件。这个答案是 import numpy as np自动所需的 Linux 命令的快速视图。

如果要使用名为 numpy的自定义配置文件,请运行:

ipython profile create numpy
echo 'import numpy as np' >> $(ipython locate profile numpy)/startup/00_imports.py
ipython --profile=numpy

或者,如果希望修改默认配置文件以总是导入 numpy:

echo 'import numpy as np' >> $(ipython locate profile default)/startup/00_imports.py
ipython

查看 IPython 配置教程以深入了解有关配置概要文件的内容。请参阅 .ipython/profile_default/startup/README了解启动目录的工作原理。

我的默认 ipython调用是

ipython --pylab --nosep --InteractiveShellApp.pylab_import_all=False

--pylab作为 ipython选项已经有一段时间了。它导入 numpy和(部分) matplotlib。我已经添加了 --Inter...选项,所以它不使用 *导入,因为我更喜欢使用显式的 np....

这可以是快捷方式、别名或脚本。

作为一个被接受的答案的更简单的替代方案,在 linux 上:

只需定义一个别名,例如在 ~/中放入 alias pynp='python -i -c"import numpy as np"'。Bash _ aliases 文件。然后您可以使用 pynp调用 python + numpy,并且仍然可以使用带有 python的 python。Python 脚本的行为保持不变。

虽然创建一个像 Ravenac95 暗示这样的自定义启动脚本是大多数情况下的最佳通用解决方案,但是在您希望使用 from __future__ import X的情况下它不会起作用。如果您有时使用 Python 2.x,但又想使用现代除法,那么只有一种方法可以做到这一点。一旦你创建了一个配置文件,编辑 profile_default(对于 Ubuntu,它位于 ~/.ipython/profile_default中)并在底部添加如下内容:

c.InteractiveShellApp.exec_lines = [
'from __future__ import division, print_function',
'import numpy as np',
'import matplotlib.pyplot as plt',
]

您可以创建一个普通的 python 脚本作为 import_numpy.py或任何您喜欢的东西

#!/bin/env python3
import numpy as np

然后用 -i标志发射。

python -i import_numpy.py

像这样的方式将给予您灵活性,只选择您想要的不同项目的模块。

我创建了一个小脚本,用您想要的代码初始化 ipython。

  • 在项目根文件夹中创建 start.ipy文件。
  • 使用进入 ipython 所需的所有内容编辑创建的文件。
  • 提示,不要在名称中添加“ profile”这个词,因为 ipython 已经包含了它。
  • cp start.ipy ~/.ipython/profile_<your_profile_name>/startup/start.ipy
  • 每次需要在 ipython 中加载所有内容时都运行 ipython --profile=<your_profile_name>

使用这个解决方案,您不需要设置任何 env 变量。但是,每次修改 start.ipy文件时,都需要将其复制到 ipython文件夹。