pylint不喜欢pkg_resources.resource_filename

| 在我的脚本中,我使用:
python
from pkg_resources import resource_filename
PyDev和pylint 0.23都在这里抱怨未解决的导入。
E0611 No name \'resource_filename\' in module \'pkg_resources\'
据我了解,发生这种情况是由于PyDev和pylint都只执行源代码分析,而没有实际尝试分析/编译它。显然,
pkg_resources
对定义
pkg_resources
做些特殊的事情。包装和符号当然都在那里,并且整个过程都很好。两个问题: 我该如何说服Eclipse和PyDev这两个人错了? 首先是什么原因导致了问题?我还没有发现其他人有这种问题,我怀疑我的处境是否有点独特... :) Python 2.7.1(在OSX下),分发0.6.19。     
已邀请:
        您可以通过修改项目的pydev python解释器定义来加载麻烦的动态模块。配置“强制内置”的默认列表以包括您使用的动态生成的定义。强制内置是通过对动态生成的类进行脱壳和加载/检查来生成的。 在python解释器定义
(preferences => pydev => interpreters => python interpreter)
中,为pydev项目选择当前使用的解释器。选择
Forced Builtins
选项卡。按
New...
按钮,然后将
pkg_resources
添加到列表中。 我已经做到了,现在我的错误消失了,方法的自动完成可以在我的项目中正常工作。我正在使用python 2.7.9,pydev 3.3.3和eclipse kepler r2。 对于pylint,您可以在项目的pylint配置中,针对整个文件或一个使用实例的全局禁用警告。您可以在文件的开头添加“ 8”注释以对该模块禁用它,也可以在上面的行中添加该注释以仅对该实例禁用它。还有一种可能耗时的方法来手动提示pylint您的类具有特定的方法。     
        我有同样的问题。对于Pydev,我在pydev.org上找到了答案:转到错误行,按ctrl-1,然后选择\'undefined variable \'。然后它将添加一个“ 9”注释,并且错误消失了。 对于pylint,禁用E1101可以解决问题,编译指示
# pylint: disable=E1101
。 Pylint编译指示只需要处于相同的缩进级别,但是pydev注释必须位于同一行。我有点混乱的函数变成了:
def get_test_datafile(file_):
    # pylint: disable=E1101
    return pkg_resources.resource_string(__name__, #@UndefinedVariable
                                         \'testdata/\'+file_)
    

要回复问题请先登录注册