PyCharm中的Passlib不允许从passlib.hash导入任何内容

时间:2014-12-13 20:22:53

标签: python-2.7 pycharm

我正在使用Pycharm import passlib.hash.pbkdf2_sha512但由于某种原因我只能导入_proxy对象。

我不确定为什么我无法导入特定模块,因为它只是从命令行启动python shell时工作得很好。

1 个答案:

答案 0 :(得分:3)

(Passlib开发人员)

问题是passlib.hash执行了一些延迟导入技巧,以便按需加载哈希类而不是一次加载所有哈希类(其中有很多,大多数人只需要一两个)。这通常不是问题,但PyCharm的自动完成似乎依赖于源检查而不是检查活动对象......这意味着当未明确列出模块的内容时,它会崩溃。

我自己开始使用PyCharm,我已经尝试过调整passlib.hash如何处理事情,但到目前为止还没有找到一种方法来欺骗PyCharm。这个帖子(http://forum.jetbrains.com/thread/PyCharm-54)似乎表明这是一个已知的问题w / PyCharm,但它是从2010年开始的,我认为从那以后没有做过任何事情。

如果PyCharm为源代码添加了一种方式来指示对模块进行实时检查是安全的(例如通过在源代码中查找某些特殊的标记注释,例如# -*- live-inspection-safe -*-),我将很乐意添加它变成了passlib。在那之前,这可能是事情的状态:(


更新2016-11-10

我有一个解决方法。 Passlib 1.7的passlib.hash模块现在包含一个“可以”进行的所有导入的列表,隐藏在if False:块内。这似乎足以欺骗PyCharm自动检测内容,而不会破坏延迟导入行为。如果没有更好的解决方案,这个黑客应该有希望现在正常工作。