我正在尝试创建一个mercurial pre-commit钩子,它在pre-commit上运行pylint
。我的项目使用虚拟环境。你知道吗
我设置了钩子来对更改的文件调用pylint
,但是我得到了错误:
Traceback (most recent call last):
File "/home/barmstrong/.virtualenvs/amp/bin/pylint", line 10, in <module>
sys.exit(run_pylint())
File "/home/barmstrong/.virtualenvs/amp/lib/python3.6/site-packages/pylint/__init__.py", line 20, in run_pylint
Run(sys.argv[1:])
File "/home/barmstrong/.virtualenvs/amp/lib/python3.6/site-packages/pylint/lint.py", line 1583, in __init__
linter.load_plugin_modules(plugins)
File "/home/barmstrong/.virtualenvs/amp/lib/python3.6/site-packages/pylint/lint.py", line 636, in load_plugin_modules
module = modutils.load_module_from_name(modname)
File "/home/barmstrong/.virtualenvs/amp/lib/python3.6/site-packages/astroid/modutils.py", line 202, in load_module_from_name
return load_module_from_modpath(dotted_name.split("."), path, use_sys)
File "/home/barmstrong/.virtualenvs/amp/lib/python3.6/site-packages/astroid/modutils.py", line 244, in load_module_from_modpath
mp_file, mp_filename, mp_desc = imp.find_module(part, path)
File "/usr/lib/python3.6/imp.py", line 297, in find_module
raise ImportError(_ERR_MSG.format(name), name=name)
ImportError: No module named 'common'
我相信这是由于.pylintrc
文件中有一个自定义插件,它试图从我的项目目录加载到:
'/common/blah/file.py'
在.pylintrc
中,它被引用为:
common.blah.file
我尝试将此添加到运行的PYTHONPATH
:
sys.path.append('path/common')
但错误依然存在。我如何解决这个问题,以便它可以加载我的插件?(我也尝试过将公共模块添加到PYTHONPATH
中,但没有成功)。你知道吗
编辑:如果我从我的.pylintrc
中删除common.blah/file.py
文件,它就会工作,所以我需要弄清楚如何import
它。我尝试过在PYTHONPATH
中添加“common”,但似乎不起作用。你知道吗
显然这是一个依赖项,您可以安装它来解决您的问题,您可以找到模块here
除非你正在编辑pylint的源代码
不会有任何帮助,因为pylint不会评估你的源文件。即使是这样,那也会发生在它试图加载你的插件之后,所以它已经失败了。你知道吗
您需要通过设置
PYTHONPATH
环境变量来添加路径,以便Pylint在运行时可以使用它。不要忘记要添加的路径不是'path/common'
,而是'path/'
,因为它需要是common
包所在的路径,而不是包本身的路径。你知道吗相关问题 更多 >
编程相关推荐