运行python脚本时自动导入模块?

时间:2011-11-24 10:32:13

标签: python import module

我认为其他人可能会问过这个,但我找不到它。我的问题是,我在.ipython/ipy_user_conf.py

中有这些陈述
ip.ex('import matplotlib as mat')
ip.ex('import matplotlib.pyplot as plt')
ip.ex('import numpy as np')
ip.ex('import pupynere as pu')
ip.ex('import g')
ip.ex('import bsite')
ip.ex('import csvf')
ip.ex('import pandas as pa')
ip.ex('import pickle as pk')
ip.ex('import mathex as mathex')
ip.ex('import os as os')
ip.ex('import re as re')
ip.ex('import scipy as sp')
ip.ex('import mpl_toolkits.basemap as bmp')
ip.ex('from mpl_toolkits.basemap import cm')

然后如果我在ipython shell中使用python,这些模块将在我启动ipython时直接加载,但如果我有一个python脚本,例如。ba_plot.py用于制作一些图。我在ipython中通过交互方式调试了脚本,但后来我想在shell终端中运行它,如:

chaoyue@chaoyue-Aspire-4750:~$  python ba_plot.py

但在此之前,每次我需要在ba_plot.py开始时复制以下文件:

import matplotlib as mat
import matplotlib.pyplot as plt
import numpy as np
import pupynere as pu
import g
import bsite
import csvf
import pandas as pa
import pickle as pk
import mathex as mathex
import os as os
import re as re
import scipy as sp
import mpl_toolkits.basemap as bmp
from mpl_toolkits.basemap import cm

因为否则会抱怨它无法找到模块。那么,无论如何,我可以通过在我的python脚本开头包含一些头文件来避免这样做,而在头文件中导入所有这些模块?通过这种方式,我只需要在我的python脚本开头添加就行。

2 个答案:

答案 0 :(得分:4)

使用依赖于外部启动脚本的脚本来使其工作是不好的做法。执行这些导入你应该怎么做。

如果您通过将导入集中在文件中(例如,将其称为common_imports.py),然后从中导入所有内容(from common_imports import *),您可以定期导入相当大的一组内容,可以简化它。 。然后,这只会变成一条线。但我仍然希望看到明确的导入。

(另请注意:在import os as os中,as os完全是多余的。)

答案 1 :(得分:2)

您需要修改site.py。每次运行Python程序时都会运行此脚本。对我而言,它存在于/usr/lib/python2.7/site.py

正如克里斯摩根所说,这是非常糟糕的做法,我强烈建议你避免它。

相关问题