2024-04-24 07:34:41 发布
网友
我在窗户上从机翼内侧跑派林特。我在我的项目中有一个子目录(包),在包中我从顶层导入一个模块,即
__init__.py myapp.py one.py subdir\ __init__.py two.py
在two.py内部有import one,这在运行时很好,因为顶层目录(运行myapp.py)在Python路径中。但是,当我在two.py上运行PyLint时,它会给我一个错误:
two.py
import one
myapp.py
F0401: Unable to import 'one'
我该怎么解决?
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环境变量更改为包含模块上方的目录。
PYTHONPATH
或者,编辑~/.pylintrc以包含模块上方的目录,如下所示:
~/.pylintrc
[MASTER] init-hook='import sys; sys.path.append("/path/to/root")'
(或者在pylint的其他版本中,init hook要求您将[General]更改为[MASTER])
这两种选择都应该奏效。
希望能有所帮助。
在init-hook中更改路径的解决方案是好的,但是我不喜欢在那里添加绝对路径,因为我不能在项目的开发人员之间共享这个pylintrc文件。这个使用pylintrc文件的相对路径的解决方案更适合我:
init-hook
[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()具有相同的值。
pylint.config.PYLINTRC
find_pylintrc()
1)sys.path是一个列表。
2)问题是sys.path不是您的virtualenv.path并且您希望在virtualenv中使用pylint
3)如前所述,使用init hook(注意'and“pylint的解析是严格的”)
或者
。。以及
我知道有两个选择。
首先,将
PYTHONPATH
环境变量更改为包含模块上方的目录。或者,编辑
~/.pylintrc
以包含模块上方的目录,如下所示:(或者在pylint的其他版本中,init hook要求您将[General]更改为[MASTER])
这两种选择都应该奏效。
希望能有所帮助。
在
init-hook
中更改路径的解决方案是好的,但是我不喜欢在那里添加绝对路径,因为我不能在项目的开发人员之间共享这个pylintrc文件。这个使用pylintrc文件的相对路径的解决方案更适合我:注意
pylint.config.PYLINTRC
也存在,并且与find_pylintrc()
具有相同的值。相关问题 更多 >
编程相关推荐