为什么安装pystan如此缓慢?

4

我有一个Python项目,它依赖于pystan (用于fbprophet)。作为CI/CD工作流的一部分,我正在尝试设置Jenkins来构建镜像并推送到Docker注册表。然而,pystan的pip安装速度非常慢。似乎已经在这个阶段卡了10多分钟:

Building wheels for collected packages: pystan, pymeeus
  Building wheel for pystan (setup.py): started
  Building wheel for pystan (setup.py): still running ...

每当我尝试构建映像时,Jenkins在t2.medium上似乎会变得无响应。

是否有另一种安装pystan的方法?事先下载wheels?如何找出是什么使其变得如此缓慢?

我可能可以从已经安装了pystan的基本docker映像开始。

2个回答

9

PyStan目前提供了许多预编译的轮子,适用于不同平台和Python版本,但不包括Python 3.8。

我猜你在使用Python 3.8?尝试降级到3.7 - pip应该可以安装PyStan而无需编译。


1
正如您和@kichik所猜测的那样,我使用的是3.8版本。降级到3.7解决了问题! - erncyp
字面上来说,我在我的16核笔记本电脑上卡住了;但是在Python 3.7 Docker镜像中安装很快。如果有人想要带有Pytstan 2.19.1.1和Facebook Prophet的Docker镜像,请使用“docker pull alexcpn/fb_prophet_python:3.7.13-buster”。 - Alex Punnen

6

pip决定不使用其中一个预构建的轮子,因此需要从源代码构建软件包。pystan似乎是一个庞大的软件包,具有大量的C++代码,因此构建过程可能需要一段时间。在像t2.medium这样I/O非常有限的弱机器上尤其如此。

您可以告诉pip仅使用二进制软件包(wheel),并打印更多细节。这可能会告诉您为什么一开始没有使用轮子。

pip install -v --only-binary pystan pystan pymeeus

不使用wheels的一个常见原因是Python版本不匹配。该软件包只提供2.7、3.5、3.6和3.7版本的wheels。也许您正在使用Python 3.8。另一个常见原因是平台不匹配。该软件包有manylinux1_x86_64,但您可能正在使用i686或某种与manylinux1不兼容的发行版。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接