Python中sublimelinter - pyflakes默认版本的问题如何解决?

平时用的 sublime + sublimelinter + sublimelinter-pyflakes 来进行代码的格式检测 但是突然发现 python 的新语法 f"hello {name}" 会被检查出 syntax error 打开调试界面看了一下发现了这么一段

SublimeLinter: find_python(version=None, script='flake8', module=None) 
SublimeLinter: find_python: default python = /usr/bin/python 
SublimeLinter: find_python: available version = {'minor': 7, 'major': 2} 
SublimeLinter: find_python: 'flake8' path = /usr/local/bin/flake8 
SublimeLinter: find_python: <= ('/usr/bin/python', '/usr/local/bin/flake8', 2, 7) 
SublimeLinter: flake8 version query: /usr/bin/python /usr/local/bin/flake8 --version 

虽然上面这个是 flake8 但请大家不要介意 这个 find_python default python = /usr/bin/python 让我很不解

因为我在 sublimelinter 的配置文件里面都已经设置了 [@python3](/user/python3): "3.6"

具体内容如下

SublimeLinter: find_posix_python: python3 => /usr/local/python3.6/bin/python3 
SublimeLinter: find_python: system python = /usr/local/python3.6/bin/python3 
SublimeLinter: find_python: available version = {'minor': 6, 'major': 3} 
SublimeLinter: find_python: <= ('/usr/local/python3.6/bin/python3', None, 3, 6) 
SublimeLinter: sys.path for /usr/local/python3.6/bin/python3:
/usr/local/python3.6/lib/python36.zip
/usr/local/python3.6/lib/python3.6
/usr/local/python3.6/lib/python3.6/lib-dynload
/usr/local/python3.6/lib/python3.6/site-packages

SublimeLinter: pyflakes imported <module ‘pyflakes.api’ from ‘/usr/local/python3.6/lib/python3.6/site-packages/pyflakes/api.py’> SublimeLinter: pep8 imported <module ‘pep8’ from ‘/usr/local/python3.6/lib/python3.6/site-packages/pep8.py’> SublimeLinter: pyflakes version: 1.6.0 SublimeLinter: pyflakes: (>= 0.7.3) satisfied by 1.6.0 SublimeLinter: pyflakes activated: <builtin> SublimeLinter: pep8 version: 1.7.0 SublimeLinter: pep8: (>= 1.4.6) satisfied by 1.7.0 SublimeLinter: pep8 activated: <builtin> SublimeLinter: mypy version query: /usr/local/python3.6/bin/mypy --version SublimeLinter: mypy version: 0.540 SublimeLinter: mypy: (>= 0.520) satisfied by 0.540 SublimeLinter: mypy activated: /usr/local/python3.6/bin/mypy (disabled in settings) SublimeLinter: find_python(version=None, script=‘flake8’, module=None) SublimeLinter: find_python: default python = /usr/bin/python SublimeLinter: find_python: available version = {‘minor’: 7, ‘major’: 2} SublimeLinter: find_python: ‘flake8’ path = /usr/local/bin/flake8 SublimeLinter: find_python: <= (’/usr/bin/python’, ‘/usr/local/bin/flake8’, 2, 7) SublimeLinter: flake8 version query: /usr/bin/python /usr/local/bin/flake8 --version SublimeLinter: WARNING: no flake8 version could be extracted from: Traceback (most recent call last): File “/usr/local/bin/flake8”, line 7, in <module> from flake8.main.cli import main ImportError: No module named flake8.main.cli

希望对这个有研究的 V 友能帮忙看一下 感激不尽


Python中sublimelinter - pyflakes默认版本的问题如何解决?

4 回复

顶自己一下


这个问题通常是因为SublimeLinter-pyflakes插件使用了错误的Python版本。以下是完整的解决方案:

1. 首先确认你的Python环境:

# 查看默认Python版本
python --version
python3 --version

# 查看Python路径
which python
which python3

2. 配置SublimeLinter-pyflakes使用正确的Python解释器:

在Sublime Text中,打开 Preferences -> Package Settings -> SublimeLinter -> Settings,在用户设置中添加:

{
    "linters": {
        "pyflakes": {
            "python": "/usr/local/bin/python3"  // 替换为你的Python3路径
        }
    }
}

3. 如果你使用虚拟环境,需要指定虚拟环境的Python:

{
    "linters": {
        "pyflakes": {
            "python": "/path/to/your/venv/bin/python"
        }
    }
}

4. 如果问题依旧,尝试重新安装插件:

  1. 通过Package Control卸载SublimeLinter和SublimeLinter-pyflakes
  2. 重启Sublime Text
  3. 重新安装SublimeLinter和SublimeLinter-pyflakes

5. 检查SublimeLinter的debug信息: 在Sublime Text控制台(Ctrl+`)查看是否有相关错误信息。

替代方案: 如果问题持续,可以考虑使用其他linter插件,如Anaconda或直接配置flake8。

总结:确保pyflakes使用正确的Python解释器路径。

检查下 flake8 脚本的第一行。估计指向了错误的 python 版本。

我找到问题了 python 指向是正确的 sublimelinter 设置也是正确的 亏在了缓存文件上。 我把缓存文件删了就正常了

回到顶部