Python启动时自动加载模块
我想在启动IPython或者Python解释器的时候,让它自动加载一个模块。
这样做可以吗?
比如说,当我启动IPython的时候:
$ ipython
...
>>> from __future__ import division
>>> from mymodule import *
In [1]:
就像在教程页面中找到的SymPy的实时命令行那样。
5 个回答
7
除非在运行 python
时加上 -S
这个选项,否则在执行你的脚本或者交互式解释器之前,Python 会默认导入一个特殊的 site 模块。这个模块会做很多事情,其中之一就是查找 *.pth
文件。在每个 *.pth
文件的每一行,应该包含一个路径,这个路径会被加入到 sys.path
中,或者是一个要执行的命令。这个模块还会导入 sitecustomize
和 usercustomize
(如果它们在 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
- 你可以在这里列出所有你希望在启动时加载的模块。