我有一个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_name
和company
是命名空间包而不是常规包。
答案 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__)