python-启动交互式shell时导入

当我通过manage.py启动交互式django shell时,通过从项目目录执行

python -v manage.py shell

,我看到在详细输出中导入了很多格式为django.package.module的模块,但仍然需要导入它们才能在shell中使用它。当我运行Python shell(使用-v参数)时也会发生同样的情况。例如,我在详细输出

import os # precompiled from /usr/local/gdp/lib/python2.4/os.pyc

中看到了这一点,但是我仍然需要导入操作系统来导入和使用操作系统模块。在详细输出中看到了什么,为什么我必须再次显式地导入它们才能在shell中使用它们?Python是在启动shell时加载一些基本模块,还是某种幕后魔术?

2个回答

  1. Python在启动时隐式加载site模块,然后导入其他模块供自己使用。您可以通过-S来禁用此行为。

  2. 它们将被导入(查看sys.modules),并且对该模块的引用将在导入该模块的任何模块中创建。在shell中进行导入时,如果该模块已被导入,则只需在sys.modules中获取对它的引用的副本

Leave a Reply

Your email address will not be published. Required fields are marked *

You can use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>