我知道
import mpmath as mp
print mp.libmp.BACKEND
但如果我没弄错的话,我不会说我是否使用gmpy或gmpy2。
另外,我每当你使用较新版本的东西时,你都没有得到它旁边的版本号,但因为我可以分别import gmpy
和gmpy2
我有点担心我可能正在使用旧版本的gmpy。
谢谢
更新:
我也试过以下让我困惑/担心的事情。
import mpmath as mp
import gmpy as gm
import gmpy2 as gm2
print mp.mpf('1') == gm.mpf('1')
# Result is FALSE
print mp.mpf('1') == gm2.mpfr('1')
# Result is FALSE
print gm.mpf('1') == gm2.mpfr('1')
# Result is FALSE
print mp.mpf('1') == 1
# Result is TRUE
print gm.mpf('1') == 1
# Result is TRUE
print gm2.mpfr('1') == 1
# Result is TRUE
到底是什么?
答案 0 :(得分:8)
mpmath
会先尝试导入gmpy2
。
虽然您可以同时导入gmpy
和gmpy2
,但由于gmpy
和gmpy2
彼此不了解,因此不支持这种情况。
我同时维护gmpy
和gmpy2
,但我认为gmpy
已过时,应使用gmpy2
。
答案 1 :(得分:0)
我很确定这是可能的,因为python记录了它在字典中导入的所有模块。你可以看到它
import sys
print(sys.modules)
这是一个字典,它允许它查看它是否先前已导入模块,因此在看到import
语句时不必再次执行此操作。例如,在我的代码中,我在很多地方都有import numpy as np
,因为这些地方中的任何一个可能是第一次要求python导入它。但导入需要很长时间,因此python不希望每次看到该语句时都这样做。如果numpy
位于sys.modules
,则只是假设它已经知道它需要知道什么并跳过它。
所以要回答你的问题,请执行以下操作:
import mpmath
import sys
'gmpy2' in sys.modules.keys()
如果您获得True
,则表示您正在某处使用gmpy2
。如果mpmath
和sys
是您导入的唯一内容,则可以安全地假设mpmath
是使用gmpy2
的内容。