在我的模块中导入一次外部包而不将其添加到namesp中

2024-09-27 22:22:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我很抱歉不能更容易地表达我的问题。我正在写一个大的包,在几乎每个功能中都广泛使用熊猫。自然,我的第一直觉是创建一个__init__.pyas

import pandas
# then import my own submodules and other things

然后,每次我在函数中使用pandas时,从子模块中调用它为from . import pandas as pd或{},或者类似的东西。在

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

所以从现在起,我不再在我的__init__中导入pandas,而是在每个-函数-中分别导入,这样做很好,但重复性太强,无法设置全局熊猫设置。在

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

谢谢。在


Tags: 模块and方法函数import功能pandasinit
1条回答
网友
1楼 · 发布于 2024-09-27 22:22:55

...by importing pandas from the __init__.py call I can define some pandas' options there (like pandas.options.display.expand_frame_repr) and it will be valid throughout the module.

不管怎样,他们会的。该模块只在您第一次调用import pandas时加载。此时,对模块的引用存储在可通过sys.modules访问的模块字典中。任何其他模块中对import pandas的任何后续调用都将重复使用来自sys.modules的相同引用,因此您更改的任何选项也将应用。

Furthermore, re-importing the same package from scratch seems to me that takes longer, but I'm not sure it that is correct.

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

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

相关问题 更多 >

    热门问题