Python导入警告

时间:2015-01-20 14:31:31

标签: python

假设我想在我的程序中使用scipy,给它别名sp。我也想使用scipy的linalg模块。与numpy不同,该模块不会自动导入。所以我要写:

import scipy as sp
import scipy.linalg

这实现了预期的结果:我现在可以写sp.linalg.inv(...)

问题是,行import scipy.linalg也导入了scipy。鉴于我对scipy的所有调用都是使用别名sp进行的, spyder 在第二行给出了警告'scipy'导入但未使用的

这样做的正确方法是什么?或者我的方法是正确的,问题只是spyder的?

我能做到:

import scipy.linalg
sp = scipy

但这看起来并不像pythonic ..

1 个答案:

答案 0 :(得分:1)

如果您使用

from scipy import linalg

然后scipy将不会添加到全局命名空间,但这会将linalg添加到全局命名空间。


作为技术说明, 可以定义sp.linspace而无需向全局变量添加scipylinspace

import importlib
import scipy as sp
sp.linalg = importlib.import_module('scipy.linalg')

注意sp只有globals()

print(globals().keys())
# ['__builtins__', '__file__', 'sp', '__package__', '__name__', '__doc__']

或者,或者,

import scipy as sp
sp.linalg = __import__('scipy.linalg', fromlist=['linalg'])