# NOTE: could support 'non-lazy' version which just imports
# all schemes known to list_crypt_handlers()
#=============================================================================
# import proxy object and replace this module
#=============================================================================
from passlib.registry import _proxy
import sys
sys.modules[__name__] = _proxy
#=============================================================================
# eoc
#=============================================================================
# NOTE: could support 'non-lazy' version which just imports
# all schemes known to list_crypt_handlers()
#=============================================================================
# import proxy object and replace this module
#=============================================================================
def sha256_crypt():
pass
from passlib.registry import _proxy
import sys
sys.modules[__name__] = _proxy
#=============================================================================
# eoc
#=============================================================================
2条答案
按热度按时间s71maibg1#
passlib有一个导入解析“问题”,但我预计它不会找到sha256_crypt,而不是找不到passlib。首先,我会确保你的机器上正确安装了passlib模块。其次,我会尝试运行错误的程序,看看你是否可以运行这样的程序:
如果运行,那么唯一的“问题”是导入解析是静态的,它不能解析在运行时没有定义的函数。如果您从passlib查看www.example.com,这将是有意义hash.py的。
正如你所看到的,sha256_crypt在这里没有定义,所以导入返回时是错误的,即使模块在运行时会正确加载!
现在你有两个选择。如果你像我一样使用PyDev,你可以在import旁边添加一个ignore标志:
你也可以修改hash.py,这样你就可以定义一个占位符sha256_crypt函数,以确保导入返回时是有效的,但实际上这不是最好的方法,但它确实有效:
这将确保导入解析过程将看到该函数存在,并且它不会抱怨。
ctehm74n2#
您可能有一个虚拟环境,并在其中安装了模块,但在全局环境中启动了IDE。下面的答案为我解决了这个问题。