PyLint "无法导入"错误 - 如何设置PYTHONPATH?
我在Windows的Wing IDE里运行PyLint。我的项目里有一个子目录(包),在这个包里我从顶层目录导入了一个模块,也就是:
__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'
我该怎么解决这个问题呢?
35 个回答
76
这个问题可以通过在虚拟环境(venv)中配置pylint的路径来解决:
{
"python.pythonPath": "venv/bin/python",
"python.linting.pylintPath": "venv/bin/pylint"
}
136
在 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()
是一样的。
261
我知道有两个方法可以解决这个问题。
第一个方法是修改 PYTHONPATH
这个环境变量,把你的模块所在目录的上一级目录加进去。
第二个方法是编辑 ~/.pylintrc
文件,把你的模块上一级目录加进去,像这样:
[MASTER]
init-hook='import sys; sys.path.append("/path/to/root")'
(或者在其他版本的 pylint 中,初始化钩子需要你把 [General] 改成 [MASTER])
这两种方法都应该能解决问题。