ubuntu安装python第三方库_ubuntu上使用python3安装第三方库显示x86_64-linux-gnu-gcc 不存在...

一,问题发现

使用jenkins管理我的python代码,因为使用的是python3.5的版本,先在ubuntu上使用virtualenv生成一个python3.5的虚拟运行环境

virtualenv -p /usr/bin/python3.5 --no-site-packages python3.5

virtualenv这个命令是创建一个python的一个"独立"运行环境,因为当我们的系统存在多个版本时,并且是2和3这种完全不兼容的时候,这个时候我们就需要每个版本一个独立的运行环境了

我们查看下这个目录下都会有些什么

wKiom1gQpMvCD1PMAACYrgYfjaI057.png-wh_500x0-wm_3-wmp_4-s_3955466243.png

这个里面有我们完整的python运行环境,然后在jenkins上定义了python这个变量和pip这个变量

wKioL1gQpW-T4gM9AAAZYm9PPmw459.png-wh_500x0-wm_3-wmp_4-s_3230926521.png

然后建立了一个job,在这个job中我们使用git来拉取我们的代码,代码地址是在github上的,拉取完成后,我们自定义的的Execute shell中设定我们要执行的shell操作,提示需要安装psutil这个库,于是在系统中

pip install psutil

显示安装是成功的,然后重新构建,通过console output发现仍然提示没有psutil这个库

二,问题猜想

1,自己猜想这个可能是python2上安装成功了,它从python2的库读取路径寻找,使用的pip也是2的版本,于是使用将这个包的×××下来,解压,使用virtual环境中的python3.5

python3.5 setup.py build

结果显示x86_64-linux-gnu-gcc命令不存在,但是系统中确实是存在这个命令的,于是怀疑virtualenv环境中可能和外面环境不通用

2,使用系统中自带的python3.5安装,仍然显示x86_64-linux-gnu-gcc命令不存在,通过jenkins console output窗口查看显示psutil中的一个文件没有Python.h这个头文件,百度到显示python的开发包不存在,终于找到问题的答案了。

三,解决问题

因为文件中使用的是python3,所以使用的也应该是python3的开发包,于是安装好他的开发包

sudo apt-get install python3-dev

sudo apt-get upgrade

然后在psutil包中使用

python3.5 setup.py build

python3.5 setup.py install

彻底解决问题。

### 编译器错误分析 当遇到 `command 'x86_64-linux-gnu-g++' failed with error 'No such file or directory'` 的问题时,通常是因为开发环境中缺少必要的编译工具链或依赖项。以下是可能的原因以及解决方案: #### 原因 1:未安装 GCC 或 G++ 在 Debian 及其衍生发行版(如 Ubuntu)中,默认情况下可能并未完全安装完整的 C/C++ 开发环境。这可能导致无法找到所需的编译器。 **解决方案**: 可以通过以下命令来安装缺失的工具链: ```bash sudo apt-get update sudo apt-get install build-essential ``` 上述命令会安装 GNU Compiler Collection (GCC),其中包括了 `g++` 和其他必需的开发工具[^1]。 --- #### 原因 2:缺少特定架构的支持 如果目标平台涉及多架构支持,则需要额外安装针对 `x86_64-linux-gnu` 架构的相关和支持文件。 **解决方案**: 执行以下命令以确保安装了所有必要依赖项: ```bash sudo apt-get install gcc-multilib g++-multilib ``` 这些包提供了跨架构编译所需的支持文件[^2]。 --- #### 原因 3:缺少特定头文件或静态链接 某些项目在编译过程中可能会调用外部(例如 OpenSSL、libffi 等)。如果没有正确安装这些及其对应的开发头文件,也会引发类似的错误。 **解决方案**: 根据具体的编译需求,安装相应的开发。常见的有: ```bash sudo apt-get install libssl-dev libffi-dev libsasl2-dev ``` 对于更复杂的场景,还可以考虑安装通用数学支持: ```bash sudo apt-get install libgmp-dev libmpfr-dev libmpc-dev ``` 如果有 Python 组件参与编译过程,还需要确认已安装对应版本的 Python 头文件: ```bash sudo apt-get install libpython3.8-dev ``` 注意替换 `3.8` 为实际使用Python 版本号[^4]。 --- #### 原因 4:路径配置正确 有时即使已经安装了相关软件包,但由于 PATH 环境变量设置当或者编译脚本中的硬编码路径冲突,仍会出现找到指定工具的情况。 **临时解决办法**: 手动创建一个占位符文件让编译器跳过检测阶段: ```bash touch /usr/bin/x86_64-linux-gnu-g++ chmod +x /usr/bin/x86_64-linux-gnu-g++ ``` 这种方法虽然简单粗暴但能快速验证是否属于单纯命名匹配失败引起的问题[^5]。 另一种方式则是调整 Makefile 或者 setup.py 文件内的 CC/CXX 参数定义部分,显式指向系统中存在的真实可执行二进制位置。 --- ### 总结建议流程 1. 更新并升级 APT 软件源列表; 2. 安装基础构建套件(build-essential); 3. 补充多架构交叉编译能力(gcc/g++-multilib); 4. 额外加载项目依赖的具体动态/静态资源(libxxx-dev系列); 5. 若以上均无效再尝试伪造目标程序期待发现却存在的实际实体对象实例(touch trick). 通过逐步排查上述几个方面应该能够有效定位并最终消除该类编译期异常状况的发生.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值