不使用gcc安装psutil

gue*_*tli 8 python gcc setup.py python-packaging

到目前为止,我们通过自定义pypi服务器安装了psutil.

现在我们有了一个新的环境,我们不应该安装gcc.

现在旧的方式(pip在安装期间启动gcc)不再起作用了.

上下文:

  • Linux服务器
  • 在virtualenv里面的python
  • 所有代码都需要从我们的数据中心部署(无需访问Internet)

我看到了这些替代品:

RPM

创建一个RPM.因为我们已经用--system-site-packages这个作品来运行我们的virtualenv .这迫使服务器上的所有virtualenvs使用相同的版本psutil.但这不是什么大问题.

我从来没有用过那个.

冻结

使用像这样的工具cx_freeze.我以前从未这样做过.

其他方案?

我想还有其他的,可能更好的方法来解决这个问题.

背景

psutil在这种情况下只是一个例子.其他包含c扩展的python包也出现了同样的问题.想象一下,这里还没有RPM.

Man*_*cob 6

最惯用的方法是使用轮子.实际上,您的用例是创建轮盘格式的原因之一.

构建平台轮很容易:

python setup.py bdist_wheel
Run Code Online (Sandbox Code Playgroud)

您可能会收到错误"无效命令'bdist_wheel'".在这种情况下,您必须安装wheel包:

pip install wheel
Run Code Online (Sandbox Code Playgroud)

在制造车轮之后,它就是在例如dist/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl.您可以通过以下方式安装:

pip install dist/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl
Run Code Online (Sandbox Code Playgroud)

通常,安装和使用滚轮仅适用于二进制兼容的系统.由于不能在不同的Linux发行版和版本中保证这一点,因此将轮子上传到中央PyPI时存在限制.运行自己的PyPI服务器时,这些限制不适用.

您可以通过以下方式将滚轮上传到自定义PyPI:

python setup.py bdist_wheel upload --repository <url-to-custom-pypi>
Run Code Online (Sandbox Code Playgroud)

并通过以下方式从您的自定义PyPI安装它:

pip install --index-url <url-to-custom-pypi> psutil
Run Code Online (Sandbox Code Playgroud)