[英]function error for python-rsa module
我在我的python项目中安装了使用rsa算法的Python-RSA ,但是当我要使用它时,出现以下错误:
import rsa
(public_key, private_key) = rsa.newkeys(1024, accurate=True, poolsize=8)
上面的代码来自官方文档
我检查模块文件中的newkeys()函数,并且该函数存在
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缓存,它已经加载的模块。
感谢Gregory:
1-首先,*。py文件名和导入的模块名不能相同.....如果我们为它们使用相同的名称,则会出现类似我的问题。 IDLE无法识别运行文件的写入方式
2-该模块存在严重问题。 当我想使用newkeys ()函数的poolsize = x参数时,我的程序中出现很多错误和一个大循环。 这是因为此模块的多重处理在Windows 10中不起作用。此问题可能是Windows或module引起的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.