You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求助:导入scipy.stats.norm后无法获取scipy版本的问题

解决Scipy版本查询的报错问题

嘿,我明白你遇到的问题啦!咱们一步步来拆解和解决:

为什么会报错?

  • 第一个错误NameError: name 'scipy' is not defined:你只导入了scipy.stats下的norm子模块,但Python的模块是分层结构的,顶层的scipy模块并没有被导入,所以直接用scipy.__version__时,Python找不到这个名字。
  • 第二个错误AttributeError: 'norm_gen' object has no attribute '__version__'normscipy.stats提供的正态分布生成器对象,它本身并不携带Scipy的版本信息——版本信息是存在顶层scipy模块里的。

两种解决方法

方法1:直接导入顶层scipy模块

这是最直接的方式,先导入整个scipy,再查询版本:

import scipy
from scipy.stats import norm

# 现在就能正常打印版本啦
print(scipy.__version__)

方法2:不导入scipy,直接查询包版本(Python 3.8+)

如果不想导入整个scipy模块,可以用Python标准库的importlib.metadata来查询已安装包的版本:

from scipy.stats import norm
import importlib.metadata

print(importlib.metadata.version("scipy"))

兼容老版本Python的方法(低于3.8)

如果你的Python版本在3.8以下,可以用pkg_resources(需要确保安装了setuptools):

from scipy.stats import norm
import pkg_resources

print(pkg_resources.get_distribution("scipy").version)

内容的提问来源于stack exchange,提问作者Mohd Bilal

火山引擎 最新活动