我正在使用Pycharm import passlib.hash.pbkdf2_sha512
但由于某种原因我只能导入_proxy对象。
我不确定为什么我无法导入特定模块,因为它只是从命令行启动python shell时工作得很好。
答案 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自动检测内容,而不会破坏延迟导入行为。如果没有更好的解决方案,这个黑客应该有希望现在正常工作。