首页 > 解决方案 > Numpy 子模块导入不出现

问题描述

我前段时间问过这个问题,从那以后我一直试图解决它。

Tl;博士我想要一种将外部包导入我自己的方法,而不会让所有这些导入作为函数/模块/包出现在我的 Ipython 控制台中,这些函数/模块/包可以从我包中的模块调用。

为了做到这一点,我查看了一些完善的 Python 包是如何设计出来的,这让我深入了解了 Numpy。

在我的包中,如果我需要 Numpy 的某些功能,我可以将它导入我需要的模块中,或者将其添加到相应的__init__.py文件中。它完成了工作,但出现了上述问题。

然而,Numpy 并非如此。以 subpackage 为例linalg。它从中导入了很多功能,numpy.core但如果我输入,它们都不会出现

numpy.linalg.

在 Spyder 内的 Ipython 控制台中。唯一出现的是变量中指定的那些

__all__ = ['matrix_power', 'solve', 'tensorsolve', 'tensorinv', 'inv',
           'cholesky', 'eigvals', 'eigvalsh', 'pinv', 'slogdet', 'det',
           'svd', 'eig', 'eigh', 'lstsq', 'norm', 'qr', 'cond', 'matrix_rank',
           'LinAlgError', 'multi_dot']

所以我想,如果我__all__在我的模块中添加一个变量并只用我想要的变量初始化它应该可以解决问题。它没有,Numpy 导入仍然出现。

让我感到困惑的是,据我所知,在 Scipy 包中,如果我检查scipy.linalg.basic它导入 Numpy 的模块,它会在我输入时出现

scipy.linalg.basic.

与模块中编写的函数一起进入 Ipython 控制台。

因此,与 Scipy 和我自己的包相比,Numpy 处理的事情有所不同,我不知道它是什么。有任何想法吗?

标签: python-3.xnumpyimportscipy

解决方案


推荐阅读