gpt4 book ai didi

python - python-rsa 模块的函数错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:57 25 4
gpt4 key购买 nike

我安装了 Python-RSA在我的 python 项目中使用 rsa 算法,但是当我想使用它时出现此错误:

run error

import rsa
(public_key, private_key) = rsa.newkeys(1024, accurate=True, poolsize=8)

以上代码来自official Doc

我检查模块文件中的 newkeys() 函数并且这个函数存在

module's files

def newkeys(nbits, accurate=True, poolsize=1):
if nbits < 16:
raise ValueError('Key too small')
if poolsize < 1:
raise ValueError('Pool size (%i) should be >= 1' % poolsize)
if poolsize > 1:
from rsa import parallel
import functools
getprime_func = functools.partial(parallel.getprime, poolsize=poolsize)
else: getprime_func = rsa.prime.getprime
(p, q, e, d) = gen_keys(nbits, getprime_func)
n = p * q
return (PublicKey(n, e), PrivateKey(n, e, d, p, q))
__all__ = ['PublicKey', 'PrivateKey', 'newkeys']
if __name__ == '__main__':
import doctest
try:
for count in range(100):
(failures, tests) = doctest.testmod()
if failures:
break
if (count and count % 10 == 0) or count == 1:
print('%i times' % count)
except KeyboardInterrupt:
print('Aborted')
else:
print('Doctests done')

这是怎么回事?

最佳答案

因此,事实证明,您遇到了 Python 的一个相当奇怪的特性,即您可以导入当前文件的模块。您的 rsa.py 文件隐藏了 rsa 目录(其中包含一个 __init__.py 文件,因此它可以作为一个模块加载。)

尝试创建一个包含以下内容的文件foo.py

import foo

def bar():
return 5

print dir(foo)

这会打印类似的东西

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'bar', 'foo']
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'bar', 'foo']

当你运行 python foo.py

它打印目录结构两次(一次在加载模块时),一次在评估文件时。

不会导致无限循环,因为 Python 会缓存它已经加载的模块。

关于python - python-rsa 模块的函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34462736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com