到目前为止我们安装了psutil通过我们的自定义 pypi 服务器。
现在我们有一个新的环境,我们不应该安装 gcc。
现在旧方法(pip 在安装过程中启动 gcc)不再有效。
上下文:
- Linux 服务器
- virtualenv 中的 python
- 所有代码都需要从我们的数据中心部署(无需互联网访问)
我看到了这些替代方案:
每分钟转数
创建一个 RPM。因为我们已经使用 --system-site-packages
运行了我们的 virtualenv,所以这可行。这会强制服务器上的所有 virtualenvs 使用相同版本的 psutil
。但这不是什么大问题。
轮子
我从来没有用过。
卡住
使用像cx_freeze
这样的工具。我以前从未这样做过。
其他解决方案?
我想还有其他可能更好的方法可以解决这个问题。
背景
psutil
只是本例中的一个示例。其他包含 c 扩展的 python 包也会出现同样的问题。假设这里还没有 RPM。
最佳答案
最惯用的方法是使用轮子。事实上,您的用例是创建 wheel 格式的原因之一。
构建 platform wheel很简单:
python setup.py bdist_wheel
您可能会收到错误“无效命令‘bdist_wheel’”。在这种情况下,您必须安装 wheel
包:
pip install wheel
构建轮子后,它位于例如dist/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
。您可以通过以下方式安装它:
pip install dist/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
一般来说,安装和使用 wheel 只适用于二进制兼容的系统。由于不能保证跨不同的 Linux 发行版和版本,因此有 restrictions将轮子上传到中央 PyPI 时。运行您自己的 PyPI 服务器时,这些限制不适用。
您可以通过以下方式将轮子上传到您的自定义 PyPI:
python setup.py bdist_wheel upload --repository <url-to-custom-pypi>
然后通过以下方式从您的自定义 PyPI 安装它:
pip install --index-url <url-to-custom-pypi> psutil
关于python - 安装不带 gcc 的 psutil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37406312/