Pylint无法在Mercurial预提交钩子上加载插件

Oul*_*der 6 python mercurial pylint mercurial-hook

我试图创建一个在预提交上运行的Mercurial预提交钩子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'
Run Code Online (Sandbox Code Playgroud)

我相信这是由于.pylintrc尝试从我的项目目录中加载的文件中的自定义插件所致:

'/common/blah/file.py'
Run Code Online (Sandbox Code Playgroud)

并在中.pylintrc被引用:

common.blah.file
Run Code Online (Sandbox Code Playgroud)

我尝试将其添加到PYTHONPATH运行中:

sys.path.append('path/common')
Run Code Online (Sandbox Code Playgroud)

但是错误仍然存​​在。我该如何解决,以便它可以加载我的插件?(我还尝试了将通用模块添加到的变体,但PYTHONPATH没有成功)。

编辑:如果我从common.blah/file.py文件中删除该文件.pylintrc,那么我需要弄清楚该如何处理import。我曾尝试将'common'添加到中,PYTHONPATH但似乎不起作用。

Sam*_*ine -2

显然这是一个依赖项,您可以安装它来解决您的问题,您可以在此处找到该模块