PyLint“无法导入”错误-如何设置PYTHONPATH?

2024-04-24 07:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在窗户上从机翼内侧跑派林特。我在我的项目中有一个子目录(包),在包中我从顶层导入一个模块,即

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

two.py内部有import one,这在运行时很好,因为顶层目录(运行myapp.py)在Python路径中。但是,当我在two.py上运行PyLint时,它会给我一个错误:

F0401: Unable to import 'one'

我该怎么解决?


Tags: 模块项目pyimport路径目录initone
3条回答

1)sys.path是一个列表。

2)问题是sys.path不是您的virtualenv.path并且您希望在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])'

或者

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

。。以及

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

我知道有两个选择。

首先,将PYTHONPATH环境变量更改为包含模块上方的目录。

或者,编辑~/.pylintrc以包含模块上方的目录,如下所示:

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

(或者在pylint的其他版本中,init hook要求您将[General]更改为[MASTER])

这两种选择都应该奏效。

希望能有所帮助。

init-hook中更改路径的解决方案是好的,但是我不喜欢在那里添加绝对路径,因为我不能在项目的开发人员之间共享这个pylintrc文件。这个使用pylintrc文件的相对路径的解决方案更适合我:

[MASTER]
init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"

注意pylint.config.PYLINTRC也存在,并且与find_pylintrc()具有相同的值。

相关问题 更多 >