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 中不起作用。此问题可能是由 Windowsmodule 引起的.