我知道
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什么鬼东西?
发布于 2014-10-24 17:19:51
mpmath将首先尝试导入gmpy2。
虽然您可以同时导入gmpy和gmpy2,但由于gmpy和gmpy2彼此不知道,所以它不是一个受支持的场景。
我同时维护了gmpy和gmpy2,但是我认为gmpy已经过时了,应该使用gmpy2。
发布于 2017-11-20 14:33:27
我确信这是可能的,因为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的。
https://stackoverflow.com/questions/26552363
复制相似问题