如何让PyLint找到命名空间包?

时间:2014-08-23 21:40:10

标签: python namespaces pylint

我有一个virtualenv,我已经使用company.project_name命名空间安装了两个软件包。因此,第一个包可以从company.project_name.one导入,第二个包可以从company.project_name.two导入。

挑战在于,我似乎无法在其中任何一个上运行PyLint。如果我发出:

$ pylint company.project_name.one

我明白了:

************* Module company.project_name.one
F:  1, 0: No module named project_name.one(fatal)

我怀疑我可能做错了什么。有没有正确的方法来做到这一点?

编辑:我应该已经明确表示company.project_namecompany是命名空间包而不是常规包。

2 个答案:

答案 0 :(得分:2)

从命令行使用pylint company/project_name/one.py

~$ pylint foo2.foo.py
No config file found, using default configuration
************* Module foo2.foo.py
F:  1, 0: No module py in foo2.foo (fatal)

~$ pylint foo2/foo.py

No config file found, using default configuration
************* Module foo2.foo
C:  1, 0: Black listed name "foo" (blacklisted-name)
C:  1, 0: Missing module docstring (missing-docstring)
C:  1, 0: Invalid argument name "a" (invalid-name)
C:  1, 0: Invalid argument name "b" (invalid-name)
W:  1,13: Unused argument 'a' (unused-argument)
W:  1,16: Unused argument 'b' (unused-argument)


Report
======
3 statements analysed.

etc............

没有目录company.您无需使用/,就像更改目录cd foo2/

一样

答案 1 :(得分:1)

好的,所以我觉得PyLint并不像这样声明的命名空间包:

__import__('pkg_resources').declare_namespace(__name__)

我将其更改为以下内容并且一切正常:

from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)