mamba环境中Python3.6与pylint兼容问题及依赖排查求助
问题描述
在Linux系统中通过mamba创建Python3.6干净环境并安装代码检查工具后,运行pylint出现兼容性报错:
操作步骤
mamba create -n py_36_dev_generic python=3.6 mamba activate py_36_dev_generic mamba install pylint pycodestyle pydocstyle
报错信息
Traceback (most recent call last): File "/home/johndoe/mambaforge/envs/py_36_dev_generic/bin/pylint", line 10, in <module> sys.exit(run_pylint()) File "/home/johndoe/mambaforge/envs/py_36_dev_generic/lib/python3.6/site-packages/pylint/__init__.py", line 21, in run_pylint from pylint.lint import Run as PylintRun File "/home/johndoe/mambaforge/envs/py_36_dev_generic/lib/python3.6/site-packages/pylint/lint/__init__.py", line 76, in <module> from pylint.lint.parallel import check_parallel File "/home/johndoe/mambaforge/envs/py_36_dev_generic/lib/python3.6/site-packages/pylint/lint/parallel.py", line 9, in <module> from pylint.lint.utils import _patch_sys_path File "/home/johndoe/mambaforge/envs/py_36_dev_generic/lib/python3.6/site-packages/pylint/lint/utils.py", line 10, in <module> from pylint.config import PYLINT_HOME File "/home/johndoe/mambaforge/envs/py_36_dev_generic/lib/python3.6/site-packages/pylint/config/__init__.py", line 43, in <module> import platformdirs File "/home/johndoe/mambaforge/envs/py_36_dev_generic/lib/python3.6/site-packages/platformdirs/__init__.py", line 5 from __future__ import annotations ^ SyntaxError: future feature annotations is not defined
依赖排查结果
- 安装的pylint版本为2.11.1,依赖
platformdirs >=2.2.0 - 自动安装的platformdirs版本为2.5.1,conda-forge标注其支持Python>=3.6
- 但
__future__ annotations是Python3.7及以上才支持的特性,Python3.6无法识别
问题结论
这确实是conda-forge仓库中platformdirs包的依赖定义bug:包的实际代码依赖Python3.7+,但包的元数据错误标注为支持Python3.6,导致mamba在Python3.6环境中安装了不兼容的版本。
简易解决办法(无需pip或Git)
直接在当前环境中安装兼容Python3.6的platformdirs版本,强制指定版本上限:
mamba install "platformdirs<=2.4.0"
安装完成后重新运行python -m pylint即可正常使用。
如果要避免后续新建环境时重复出现问题,可以在安装pylint时直接附带兼容的platformdirs版本约束:
mamba create -n py_36_dev_generic python=3.6 mamba activate py_36_dev_generic mamba install pylint pycodestyle pydocstyle "platformdirs<=2.4.0"
内容的提问来源于stack exchange,提问作者darmual
相关产品推荐
相关产品推荐

