繁体   English   中英

python-rsa模块的功能错误

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM