Pylint无法在mercurial预调试上加载插件

2024-10-02 10:24:19 发布

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

我正在尝试创建一个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”,但似乎不起作用。你知道吗


Tags: nameinpyhomeliblinesiteload
2条回答

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

除非你正在编辑pylint的源代码

sys.path.append('path/common')

不会有任何帮助,因为pylint不会评估你的源文件。即使是这样,那也会发生在它试图加载你的插件之后,所以它已经失败了。你知道吗

您需要通过设置PYTHONPATH环境变量来添加路径,以便Pylint在运行时可以使用它。不要忘记要添加的路径不是'path/common',而是'path/',因为它需要是common包所在的路径,而不是包本身的路径。你知道吗

相关问题 更多 >

    热门问题