python-rsa 模块的功能错误
function error for python-rsa module
我在我的 python 项目中安装了 Python-RSA 以使用 rsa 算法,但是当我想使用它时出现此错误:
import rsa
(public_key, private_key) = rsa.newkeys(1024, accurate=True, poolsize=8)
以上代码来自official Doc
我检查了 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 的相当 st运行ge 属性,即您可以导入当前的模块文件。您的 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 缓存它已经加载的模块。
感谢格雷戈里:
1- 首先,*.py 文件名和导入的模块名不能相同....如果我们对它们使用相同的名称,就会出现像我这样的问题。 IDLE 无法识别 运行 文件
的写入方式
2- 此模块中存在严重问题。当我想使用 poolsize=x 函数的 newkeys() 参数时,我的程序中有很多错误和一个大循环。这是因为此模块的多处理在 Windows 10 中不起作用。此问题可能是由 Windows 或 module 引起的.
我在我的 python 项目中安装了 Python-RSA 以使用 rsa 算法,但是当我想使用它时出现此错误:
import rsa
(public_key, private_key) = rsa.newkeys(1024, accurate=True, poolsize=8)
以上代码来自official Doc
我检查了 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 的相当 st运行ge 属性,即您可以导入当前的模块文件。您的 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 缓存它已经加载的模块。
感谢格雷戈里:
1- 首先,*.py 文件名和导入的模块名不能相同....如果我们对它们使用相同的名称,就会出现像我这样的问题。 IDLE 无法识别 运行 文件
的写入方式2- 此模块中存在严重问题。当我想使用 poolsize=x 函数的 newkeys() 参数时,我的程序中有很多错误和一个大循环。这是因为此模块的多处理在 Windows 10 中不起作用。此问题可能是由 Windows 或 module 引起的.