我在Windows上的Wing IDE内部运行PyLint。我有一个子目录(包)在我的项目和包内,我从顶层导入一个模块,即。

__init__.py
myapp.py
one.py
subdir\
    __init__.py
    two.py

在two.py中,我导入了一个,这在运行时工作得很好,因为顶层目录(myapp.py从其中运行)在Python路径中。然而,当我在two.py上运行PyLint时,它会给我一个错误:

F0401: Unable to import 'one'

我怎么解决这个问题?


当前回答

当我试图提交一个PR时,我得到了这个错误。我最终所做的只是在“import”发生的同一行上添加#pylint: disable=E0401。

这有助于我通过汽车考试。

其他回答

1)系统。Path是一个列表。

2)有时问题出在系统。Path不是你的virtualenv。路径,你想在你的virtualenv中使用pylint

3)就像上面说的,使用init-hook(注意' and " pylint的解析是严格的)

[Master]
init-hook='sys.path = ["/path/myapps/bin/", "/path/to/myapps/lib/python3.3/site-packages/", ... many paths here])'

or

[Master]
init-hook='sys.path = list(); sys.path.append("/path/to/foo")'

.. 而且

pylint --rcfile /path/to/pylintrc /path/to/module.py

我在项目的根目录中添加了一个新文件pylintrc

[MASTER]
init-hook='import sys; sys.path.append(".")'

它在PyCharm IDE中为我工作

我找到了一个很好的答案。编辑pylintrc并在master中添加以下内容

init-hook="import imp, os; from pylint.config import find_pylintrc; imp.load_source('import_hook', os.path.join(os.path.dirname(find_pylintrc()), 'import_hook.py'))"

也许通过手动在PYTHONPATH中追加目录?

sys.path.append(dirname)

如果有人正在寻找一种在PyCharm中运行pylint作为外部工具的方法,并让它在他们的虚拟环境中工作(为什么我想到这个问题),下面是我如何解决它:

在PyCharm > Preferences > Tools > External Tools中,为pylint添加或编辑一个项目。 在“编辑工具”对话框的“工具设置”中,将“程序”设置为使用python解释器目录中的pylint: $PyInterpreterDirectory$/pylint 在parameters字段中设置其他参数,例如:——rcfile=$ProjectFileDir$/pylintrc -r n $FileDir$ 将工作目录设置为$FileDir$

现在使用pylint作为外部工具将在您使用公共配置文件选择的任何目录上运行pylint,并使用为您的项目配置的任何解释器(假设是您的virtualenv解释器)。