如何让PyLint找到命名空间包?
我有一个虚拟环境,在里面安装了两个包,它们都使用了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_name
和company
是命名空间包,而不是普通的包。
2 个回答
2
好的,看起来PyLint对这样声明的命名空间包不太满意:
__import__('pkg_resources').declare_namespace(__name__)
我把它改成了下面这样,然后一切都正常了:
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
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/
来进入一个文件夹。