python - 如何更新/安装 gcovr 以匹配我更新的编译器 gcc
问题描述
我有 ubuntu 18.04 和 gcc 版本 7。
我使用替代品将 gcc 更新到版本 8,并将我的 gcov 版本从属到 gcc 以保持它们兼容(这在 nicley 中有效),但gcovr
它本身被困在 3.4 版,它需要是 ~ 4.x 版
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 \
--slave /usr/bin/g++ g++ /usr/bin/g++-7 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 \
--slave /usr/bin/g++ g++ /usr/bin/g++-8 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-8
我进行了一些研究,我认为 gcovr 我只是一个 python 脚本。我安装了 python 2.7,也安装了 python .36。
我尝试使用 pip 安装 gcovr:
sudo -H pip install gcovr
Requirement already satisfied: gcovr in /usr/lib/python2.7/dist-packages
这个网站显示了我需要的版本:这里
以下是相关表格:
Python gcovr
2.6 3.4
3.4 4.1
所以我知道我想要什么以及我需要去哪里,但我不知道如何去那里。我认为我的 pip install 命令调用了 python 2.7 pip(我的 python 知识基本上为零),所以我觉得我需要为 python 3.6 调用 pip 以获得我想要的 gcovr 版本(可能在这里很远)。知道我有各种版本的 python,看起来我的默认版本是 2.7:python --version: 2.7
有什么线索可以让我更新 gcovr(甚至我的 python 版本默认为 3.x)?
更新 1
我得到了一点点。我安装了 python 替代品:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2
现在我可以在 python 2.x 和 3.x 之间切换。当我将 python 设置为 3.x 并尝试安装 gcovr 时,我得到:
sudo -H pip install gcovr
Collecting gcovr
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/gcovr/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/gcovr/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/gcovr/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/gcovr/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:852)'),)': /simple/gcovr/
Could not find a version that satisfies the requirement gcovr (from versions: )
No matching distribution found for gcovr
我想我可以下载更新版本的 gcovr 脚本...
解决方案
Gcovr 独立于 GCC 版本,但 GCC 8 确实稍微改变了覆盖格式。这些更改首先在 gcovr 4.0 中实现,但在 gcovr 4.2 中添加了进一步的改进。如果您使用的编译器不是命名gcc
或g++
路径中的编译器,您应该告诉 gcovr 它需要使用哪个 gcov 版本(例如gcovr --gcov-executable gcov-7 ...
)。
这种情况下的问题是,python
通常pip
指的是 Python 2.7 版本,而不是 Python 3 版本。Python 3.x 变体可用作python3
和pip3
。因此,正确的调用将是:
$ sudo pip3 install gcovr
(如果安装到您的主目录中,也应该在没有 sudo 的情况下工作。)
如果要为特定 python 安装 gcovr,可以调用 pip,如下所示python -m pip ...
:
$ sudo /path/to/your/python3 -m pip install gcovr
如果要升级现有的已安装 Python 包,则必须明确告诉 pip 这样做:
$ pip install -U gcovr
但是,您不能使用 pip 来更新通过 apt 安装的软件包。相反,首先删除 apt 包,例如使用sudo apt-get remove gcovr
.
要安装特定的 gcovr 版本,请使用类似的需求规范gcovr == 4.2
(但请记住使用引号):
$ pip3 install 'gcovr == 4.2'
您不应该使用镜像,除非您的本地网络情况需要这样做,例如,如果您没有互联网连接。如果您受到 TLS 拦截(本质上是破坏普通证书验证的中间人攻击),您可能希望用pip --cert /path/to/ca ...
. 但是,如果您不想从 PyPI 安装,您也可以从 Github 安装,例如pip install git+https://github.com/gcovr/gcovr.git
用于开发版本或pip install https://github.com/gcovr/gcovr/archive/4.2.tar.gz
特定版本。
升级 gcovr 时,还请阅读更改日志,因为在某些极端情况下,某些更改会破坏兼容性,例如围绕参数处理或用于查找源外构建的启发式方法。在某些情况下,这可能会改变覆盖率指标。
另请注意,Python 2 已停产,不再受支持。下一个 gcovr 版本(预计为 4.3)将不再支持 Python 2.x 和 3.5。即使 Python 2.7 已经死了,你也不应该改用python
Python 3——这会破坏你系统上的许多程序,可能包括重要的操作系统组件。相反,python3
如果您想要 Python 3,请始终显式使用。
推荐阅读
- r - 加载 tidyverse 时出错 - 找不到入口点
- javascript - 无法从控制器中的 HTTP 方法获取回调
- forestadmin - 智能字段 OBJECT 类型
- awk - 如何避免用awk返回系统命令?
- vba - 在抓取维基百科 URL 时避免 Google IP 阻塞
- javascript - 我们如何检查在 sap ui5 中单击了哪些图块?根据点击的图块调用不同的方法是什么?
- ajax - 在 WordPress 中使用 ajax 动态填充选择
- php - 只有 64 张图片正在发送到服务器
- syntax - 如何从此语法中消除歧义(antlr4)
- javascript - Highcharts 多列的平均值