导入错误:无法从分数导入名称 gcd

问题描述 投票:0回答:5

我正在尝试从名为fractions 的模块中使用

from fractions import gcd
导入一个名为gcd 的函数。由于某种原因,PyCharm 抛出 ImportError:

    from fractions import gcd
ImportError: cannot import name 'gcd' from 'fractions' 

我以前也这样工作过,我做错了什么?

python python-3.x importerror
5个回答
21
投票

fractions.gcd(a, b)
移至 Python 3.9 中的数学模块。所以只需将呼叫替换为
math.gcd(a, b)
即可。

事实上,自 Python 3.5 以来

fractions.gcd
已被弃用(在括号中):

Python版本
fractions.gcd(a, b)
math.gcd(a, b)
math.gcd(*integers)
Python 3.0 X
Python 3.1 X
Python 3.2 X
Python 3.3 X
Python 3.4 X
Python 3.5 (X) X
Python 3.6 (X) X
Python 3.7 (X) X
Python 3.8 (X) X
Python 3.9 X
Python 3.10 X
Python 3.11 X
Python 3.12 X

此外,从 Python 3.9 开始,

math.gcd
可以接受任意数量的参数(甚至 0 或 1)。


18
投票

这是旧的networkx版本的问题。解决这个更新网络x:

conda install -c conda-forge networkx=2.5

7
投票

你的回溯说Python 3.9并且文档gcd 是数学中的函数

3.9 版更改:math.gcd() 函数现在用于 标准化分子和分母。 math.gcd() 总是返回一个 int 类型。以前,GCD 类型取决于分子和 分母。


1
投票

如果你想要至少始终使用可用的networkx版本,请执行以下操作:

conda install -y networkx">=2.5"

有时添加

-c conda-forge
很有用...


0
投票

以下将安装最新版本的networkx:

conda install -c anaconda networkx
© www.soinside.com 2019 - 2024. All rights reserved.