Import Error: can't import name gcd from fractions

Import Error: can't import name gcd from fractions

我正在尝试从名为 from fractions import gcd 的 fractions 模块中导入一个名为 gcd 的函数。出于某种原因,PyCharm 抛出 ImportError:

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

我以前用过这个,我做错了什么?

你的回溯说 Python 3.9 和 the documentationgcd is a function in math

Changed in version 3.9: The math.gcd() function is now used to normalize the numerator and denominator. math.gcd() always return a int type. Previously, the GCD type depended on numerator and denominator.

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

conda install -c conda-forge networkx=2.5

fractions.gcd(a, b) 在 Python 3.9.

中已 移动到 math.gcd(a, b)

事实上它已经在 Python 3.5 中被弃用了(在括号中):

Python Version 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

math.gcd从3.9开始也可以带2个以上的参数,甚至0个或1个参数。

如果您始终希望至少使用可用的 networkx 版本,请执行以下操作:

conda install -y networkx">=2.5"

有时添加 -c conda-forge 很有用...

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

conda install -c anaconda networkx

在Windows中:以管理员身份cmd

pip unistall networkx
pip install networkx