Python启动时自动加载模块

16 投票
5 回答
14482 浏览
提问于 2025-04-16 05:57

我想在启动IPython或者Python解释器的时候,让它自动加载一个模块。

这样做可以吗?

比如说,当我启动IPython的时候:

$ ipython

...

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

In [1]:

就像在教程页面中找到的SymPy的实时命令行那样。

5 个回答

7

除非在运行 python 时加上 -S 这个选项,否则在执行你的脚本或者交互式解释器之前,Python 会默认导入一个特殊的 site 模块。这个模块会做很多事情,其中之一就是查找 *.pth 文件。在每个 *.pth 文件的每一行,应该包含一个路径,这个路径会被加入到 sys.path 中,或者是一个要执行的命令。这个模块还会导入 sitecustomizeusercustomize(如果它们在 sys.path 中存在的话),这两个模块可以包含任意代码,可能会让你的同事感到困惑,尤其是当他们遇到错误时。

不过问题在于,当 site 模块被导入时,当前目录并不在 sys.path 中,这就使得配置你的脚本变得有些困难。

我有时会在我的脚本开头加上以下这一行,这样脚本就会从当前目录开始查找 .pth 文件,并把缺失的路径添加到 sys.path 中:

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

在你的主目录下创建一个 .pythonstartup 文件,并在里面加载一些模块,同时把 PYTHONSTARTUP 环境变量指向这个文件。

这个文件里的 Python 命令会在你进入交互模式、看到第一个提示符之前执行。

我用这个文件来启用 Python 解释器中的命令行自动补全功能。

4

查看这个文件 ~/.ipython/ipythonrc - 你可以在这里列出所有你希望在启动时加载的模块。

撰写回答