Python 在我的模块中导入一次外部包,而不将其添加到命名空间中

Python 在我的模块中导入一次外部包,而不将其添加到命名空间中,python,python-2.7,python-import,Python,Python 2.7,Python Import,我很抱歉不能更容易地表达我的问题。我正在写一个大软件包,它在几乎所有功能中都广泛使用了熊猫。当然,我的第一反应是创建一个\uuuu init\uuuu.py作为 import pandas # then import my own submodules and other things 然后,每次我在函数中使用pandas时,从子模块调用它作为from。将熊猫作为pd导入或从。。导入熊猫,或者类似的东西 但是,如果我这样做,当我加载包时,pandas会显示为一个“子模块”,即有一个mypack

我很抱歉不能更容易地表达我的问题。我正在写一个大软件包,它在几乎所有功能中都广泛使用了熊猫。当然,我的第一反应是创建一个
\uuuu init\uuuu.py
作为

import pandas
# then import my own submodules and other things
然后,每次我在函数中使用pandas时,从子模块调用它作为
from。将熊猫作为pd导入
或从。。导入熊猫,或者类似的东西

但是,如果我这样做,当我加载包时,pandas会显示为一个“子模块”,即有一个
mypackage.pandas
。这不会伤害任何人,但我猜这是不对的。避免这种情况的一种方法是在
\uuuu init\uuuuu.py
的末尾添加一个
del pandas
,这似乎也不是正确的方法

因此,从现在起,我不会在我的
\uuuu init\uuuu
中导入熊猫,而是在每个-函数中单独导入熊猫,这样做很好,但重复性太强,无法设置全局熊猫设置

这里的首选方法是什么?有没有一种方法是我缺少的

多谢各位

…通过从
\uu init\uuuuuuuupy
调用
导入
ing
pandas
,我可以在那里定义一些
pandas
”选项(如
pandas.options.display.expand_frame\u repr
),它在整个模块中都有效

无论如何,他们都会的。该模块仅在您第一次调用
import
时加载。此时,对模块的引用存储在可通过
sys.modules
访问的模块字典中。在任何其他模块中对
import
的任何后续调用都将重新使用来自
sys.modules
的相同引用,因此您更改的任何选项也将适用

此外,在我看来,从头开始重新导入相同的包似乎需要更长的时间,但我不确定这是否正确

它实际上应该稍微快一点,因为它不必解析相对路径。加载模块后,后续调用的工作方式如下

import pandas          # pandas = sys.modules['pandas']
import pandas as pd    # pd = sys.modules['pandas']

为什么您需要从中执行
之类的操作。是否将熊猫作为pd导入子模块中
?把熊猫作为pd导入有什么不对?@Aya我就是这么做的。但是通过从
\uuuu init\uuuuuuupy
调用中导入pandas,我可以在那里定义一些pandas的选项(如
pandas.options.display.expand_frame\u repr
),它将在整个模块中有效。此外,在我看来,从
scratch
重新导入相同的包需要更长的时间,但我不确定这是否正确。非常好。我不知道。所以,简而言之,我已经在做的(在每个函数中独立调用pandas)是一个很好的方法,对吗?@TomCho不清楚你是在每个函数或每个子模块中导入它。我在每个函数中都在做。我在每个函数中都这样做,否则熊猫也会显示为“子子模块”。因此,我还试图避免
mypackage.submodule.pandas
@TomCho在每个模块中只导入一次可能更有意义,谢谢!我不知道这个“提示”。我可能会开始用这个。看起来容易多了,干净多了。