在python启动时自动加载模块

时间:2010-10-23 07:14:58

标签: python module autoload ipython

我希望IPython或Python解释器在启动时自动加载模块。

有可能吗?

例如,当我启动IPython时:

$ ipython

...

>>> from __future__ import division
>>> from mymodule import *

In [1]:

在教程页面中找到类似SymPy's live shell的内容。

4 个答案:

答案 0 :(得分:15)

在您的主目录中有一个.pythonstartup并在那里加载模块并将PYTHONSTARTUP env指向该文件。

该文件中的Python命令在以交互模式显示第一个提示之前执行。

我用它在python解释器shell中启用命令行完成

答案 1 :(得分:4)

检查文件~/.ipython/ipythonrc - 您可以列出要在启动时加载的所有模块。

答案 2 :(得分:4)

除非将-S选项传递给python二进制文件,否则在将执行传递给脚本或交互式解释器之前,默认情况下会导入一个特殊的site模块。除此之外,该模块还会查找*.pth个文件。在每一行上,*.pth文件应包含要包含在sys.path中的路径,或者要包含要执行的命令。该模块还导入sitecustomizeusercustomize(可以包含任意代码,一种让同事疯狂的好方法,如果它们碰巧引发错误),如果它们存在于sys.path中的某个位置。

问题是,导入sys.path模块时当前目录不在site中,即配置特定脚本很难。

我有时会在脚本开头添加以下行,以便脚本首先搜索当前目录中的.pth文件并将缺少的路径添加到sys.path

# search for *.pth files in the current directory
import site; site.addsitedir('')

答案 3 :(得分:1)

另一种可能的解决方案是使用the argument -i from python interpreter,该脚本在执行脚本后启动交互模式。

例如,您可以使用:

  • python -i your_module.py
  • python -i /path/to/your/module,以防您定义了__main__.py
  • 甚至是python -i -m your.module