我正在使用Pycharm,import passlib.hash.pbkdf2_sha512
但是由于某些原因,我只能导入_proxy对象。
我不确定为什么不能导入特定模块,因为当从命令行启动python shell时,该模块工作得很好。
(此处为Passlib开发人员)
问题在于,passlib.hash
执行了一些懒惰导入技巧,以便按需加载哈希类,而不是一次全部加载(它们很多,大多数人只需要一两个)。通常这不是问题,但是PyCharm的自动完成功能似乎依赖于源检查而不是检查活动对象……这意味着当未明确列出模块内容时,它会掉线。
我已经开始自己使用PyCharm,并且我尝试过调整passlib.hash
操作方式,但到目前为止,还没有找到欺骗PyCharm的方法。该线程(http://forum.jetbrains.com/thread/PyCharm-54)似乎表明这是一个有PyCharm的已知问题,但这是从2010年开始的,我认为此后没有做任何事情。
如果PyCharm曾经为源代码添加一种方式来指示对模块进行实时检查是安全的(例如,通过在源代码中寻找一些特殊的标记注释# -*- live-inspection-safe -*-
),那么我很乐意将其添加到passlib中。在此之前,这可能是事物的状态:(
更新2016-11-10:
我对此有一个解决方法。Passlib 1.7的passlib.hash
模块现在包含隐藏在if False:
块内的所有“可以”导入的列表。这似乎足以使PyCharm欺骗自动检测内容,而不会破坏延迟导入行为。如果没有更好的解决方案,此黑客应该可以立即使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句