微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Numpy 子模块导入不出现

如何解决Numpy 子模块导入不出现

不久前我问了 this 个问题,从那时起我一直试图解决它。

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

为了做到这一点,我研究了一些完善的 Python 包是如何被考虑的,这让我开始研究 Numpy。

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

然而,Numpy 并非如此。以子包 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 处理的方式有所不同,我不知道它是什么。有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。