OpenSUSE Tumbleweed下pip安装google-cloud时psutil编译失败求助
解决OpenSUSE Tumbleweed上google-cloud安装失败的永久方案
你遇到的编译错误本质是缺失Python开发依赖包——Python.h是Python开发套件的核心文件,默认系统只安装Python运行环境,编译需要C扩展的库(比如psutil)时必须要有这个开发包。下面是针对你的场景(包括应用分发需求)的完整解决方案:
1. 先补全Python开发依赖
根据你使用的Python版本,安装对应的开发包:
- 如果你用Python 3.x(推荐):
sudo zypper install python3-devel gcc - 如果你需要针对Python 3.6的特定版本:
sudo zypper install python36-devel gcc - (仅当必须用Python 2时):
sudo zypper install python-devel gcc
注:
gcc也是编译C扩展必需的工具,建议和开发包一起安装。
2. 用虚拟环境隔离安装(推荐用于应用分发)
直接用sudo安装全局Python包很容易搞乱系统环境,而且给客户端分发时依赖管理会很麻烦。虚拟环境能完美解决这个问题:
- 创建专属虚拟环境(以Python 3为例):
python3 -m venv myapp_env - 激活虚拟环境:
source myapp_env/bin/activate - 现在无需
sudo,直接安装google-cloud:pip install --upgrade google-cloud
这样所有依赖都被隔离在myapp_env目录里,你可以直接把这个目录打包分发给客户端,或者导出依赖列表让他们一键安装:
# 在激活环境后导出依赖清单 pip freeze > requirements.txt
客户端拿到requirements.txt后,只需要创建虚拟环境并执行:
pip install -r requirements.txt
3. 自动安装脚本(适配客户端一键部署)
如果你需要让客户端完全自动化安装,可以写一个简单的bash脚本:
#!/bin/bash set -e # 出错时自动终止脚本 echo "正在安装系统依赖..." sudo zypper -n install python3-devel gcc echo "创建虚拟环境..." python3 -m venv myapp_env echo "激活环境并安装google-cloud..." source myapp_env/bin/activate pip install --upgrade google-cloud echo "安装完成!使用应用前请执行:source myapp_env/bin/activate"
把这个脚本保存为install_myapp.sh,客户端只需要执行以下命令就能完成自动安装:
chmod +x install_myapp.sh ./install_myapp.sh
4. 备选方案:使用系统仓库的预编译psutil
如果编译psutil还是有问题,可以直接安装OpenSUSE仓库里的预编译版本,再安装google-cloud:
sudo zypper install python3-psutil pip install --upgrade google-cloud
这样pip会优先使用系统已安装的psutil,跳过编译步骤。
内容的提问来源于stack exchange,提问作者PRATEEK AGRAWAL
相关产品推荐
相关产品推荐

