我正在尝试从名为fractions 的模块中使用
from fractions import gcd
导入一个名为gcd 的函数。由于某种原因,PyCharm 抛出 ImportError:
from fractions import gcd
ImportError: cannot import name 'gcd' from 'fractions'
我以前也这样工作过,我做错了什么?
fractions.gcd(a, b)
已移至 Python 3.9 中的数学模块。所以只需将呼叫替换为 math.gcd(a, b)
即可。
事实上,自 Python 3.5 以来
fractions.gcd
已被弃用(在括号中):
Python版本 |
|
|
|
---|---|---|---|
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)。
这是旧的networkx版本的问题。解决这个更新网络x:
conda install -c conda-forge networkx=2.5
你的回溯说Python 3.9并且文档说 gcd 是数学中的函数
3.9 版更改:math.gcd() 函数现在用于 标准化分子和分母。 math.gcd() 总是返回一个 int 类型。以前,GCD 类型取决于分子和 分母。
如果你想要至少始终使用可用的networkx版本,请执行以下操作:
conda install -y networkx">=2.5"
有时添加
-c conda-forge
很有用...
以下将安装最新版本的networkx:
conda install -c anaconda networkx