我正在尝试运行Pylint,我收到以下错误:
pkg_resources.DistributionNotFound:' backports.functools-lru-cache'没有找到分布并且是pylint所需的
我找到了以下链接,但不确定如何处理这些文件或放置它们的位置。 https://pypi.python.org/simple/backports.functools-lru-cache/
我该如何解决这个问题?
答案 0 :(得分:4)
我有同样的问题,我安装了两个缺少的依赖项(pylint上的配置错误或没有更新pip ??) 只是做:
pip install backports.functools_lru_cache
然后如果你收到如下错误:
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound:configparser
只是这样做:
pip install configparser
答案 1 :(得分:1)
在CentOS 7上的virtual environment内运行时出现此问题。
在CentOS上,backports模块打包为yum包(python-backports.x86_64
)。
解决方案是使用--system-site-packages
选项创建virtualenv。
首先验证是否安装了``python-backports`包:
yum list installed | grep python-backports
然后创建/重新创建您的虚拟环境:
virtualenv env --system-site-packages
这允许virtualenv的pylint在安装时看到backports模块。
然后在虚拟环境中安装pylint:
env/bin/pip install pylint
答案 2 :(得分:1)
据我所知,RHEL / CentOS的某些版本在其yum存储库中的backports.ssl-match-hostname包存在某些问题,这可能导致其他反向端口包从PyPI更新时出现问题。具体来说,在RHEL7.2环境中,我将问题重现如下:
> yum install python-pip # indirectly installs backports.ssl-match-hostname
> pip2 install pylint # indirectly installs backports.functools_lru_cache
> pip2 install --upgrade backports.ssl-match-hostname # install latest package from pypi, which effectively corrupts backports.functools_lru_cache
> python2 -m pylint --version # fails with missing import backports.functools_lru_cache
我发现避免这种情况的唯一方法是用PyPI中的等效软件替换yum安装的软件包。这可以按如下方式完成:
> yum install python-pip # installs backports.ssl-match-hostname as a transitive dependency
> pip2 freeze > temp_reqs.txt # take a snapshot of the installed packages and versions
> pip2 uninstall backports.ssl-match-hostname # remove the yum installed package
> pip2 install -r temp_reqs.txt # reinstall the same version of the backports package, but install from PyPI
现在已安装的软件包应按预期工作。执行以下测试用例证实了这一点:
> pip2 install pylint
> pip2 install --upgrade backports.ssl-match-hostname # previously caused corruption of backports.functools_lru_cache used by pylint
> python2 -m pylint --version # now works correctly
希望这可以帮助其他人解决这个问题。