如何在Travis上安装PySide?

6
我的测试需要使用Python 3.4的Quamash,依赖于PySide(或者最终是PyQt)。我想知道如何在Travis上安装这个依赖项,以便测试可以使用它?我知道可以通过pip从源代码安装PySide,但这是一个非常缓慢的过程。如果需要更多信息,请告诉我。

1
travis-retry sudo apt-get install python3-pyside 对你有效吗?请注意,您还需要添加 virtualenv: system_site_packages: true - well
@Will 感谢您的建议。我已经尝试实施它,但由于某种原因,Travis没有对新提交做出反应并尝试构建它(我注意到一般情况下,并非所有提交都会导致新的构建)。我将尝试在稍后运行构建。 - aknuds1
@Will 你在哪里添加 virtualenv: system_site_packages: true 部分?我尝试将其添加到 .travis.yml 的顶层,但结果是无效的。 - aknuds1
1
请查看scikit-learn的.travis.yml和他们的install script。您还可以使用WebLint语法检查您的.travis.yml文件。 - well
@Will 我已经修改了 .travis.yml 文件,现在看起来很好,但是 system_site_packages: true 设置导致构建失败 :( - aknuds1
2个回答

11

目前无法通过apt-get进行安装。请参见github问题特拉维斯文档

还有其他三个选项。

只使用pip

您的.travis.yml将包括:

install:
  - pip install PySide

正如您所提到的,在travis-ci服务器上从源代码构建PySide需要很长时间。但是,该方法保证可行。

等待Travis CI更新至Ubuntu 14.04

问题。Python3.4已包含在Ubuntu 14.04中。然后,您的.travis.yml文件可能如下所示:

install:
    - sudo apt-get install python3-pyside

打造属于你自己的轮子

你可以制作自己的 PySide 轮子,这样 Travis-CI 就不必从源代码编译 PySide 了。

按照这些说明,我通过以下方法制作了 PySide 轮子:

$ git clone https://github.com/PySide/pyside-setup.git pyside-setup
$ cd pyside-setup
$ python3.4 setup.py bdist_wheel --qmake=/usr/bin/qmake-qt4 --version=1.2.2

您可以将此wheel托管在某个位置,并通过以下方式使用travis:

install:
  - sudo apt-get install libqt4-dev
  - pip install PySide --no-index --find-links https://<your-site>;
  # Travis CI servers use virtualenvs, so we need to finish the install by the following
  - python ~/virtualenv/python${TRAVIS_PYTHON_VERSION}/bin/pyside_postinstall.py -install

其中<your-site>是一个包含名为PySideXXXXXXX.whl的wheel文件链接的网页,符合正确的命名规范。使用--no-index防止pip从pypi找到并安装新版本的PySide。

我试过了,基本用法可行!

请参考源代码

该wheel文件托管在该repo的gh-pages上。

注意,在我的Ubuntu 14.04机器上,构建wheel会生成一个大约17 MB大小的文件dist/PySide-1.2.2-cp34-cp34m-linux_x86_64.whl。当我在构建步骤中加入--standalone标签时,文件大小为 ~77 MB。

请注意,目前仅已测试import PySide。由于这是在Ubuntu 14.04下构建的,并且Travis-Ci服务器运行的是Ubuntu 12.04,因此我不知道PySide库有多少可用功能。如果遇到问题,您可能需要在运行Ubuntu 12.04的机器上重新进行此操作。

更新:

以下Python脚本

import PySide
from PySide import QtGui
PySide轮子在Ubuntu 14.04上构建时会失败。但是,在Ubuntu 12.04上构建PySide时,它会成功

使用我的PySide轮子

在您的 .travis.yml 文件中,包括以下内容:

install:
  - sudo apt-get install libqt4-dev
  - pip install PySide --no-index --find-links https://parkin.github.io/python-wheelhouse/;
  # Travis CI servers use virtualenvs, so we need to finish the install by the following
  - python ~/virtualenv/python${TRAVIS_PYTHON_VERSION}/bin/pyside_postinstall.py -install

谢谢,非常感谢你详细的写作! - aknuds1
1
感谢您的写作!我尝试在conda环境中使用独立的wheel安装PySide,但无法使其正常工作。结果发现我只需要运行python pyside_postinstall.py -install即可。 - John David Reaver

0
一个好的解决方案是使用Travis的缓存功能在构建之间缓存wheels。
添加
language: python
cache: pip

对于您的.travis.yml,缓存$HOME/.cache/pip。因此,PySide wheel将只被构建一次,并在重新构建应用程序时保留。


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