如何在Travis上安装PySide?

6 投票
2 回答
962 浏览
提问于 2025-04-18 11:34

我在测试Quamash的时候,需要用到PySide(或者将来可能用到PyQt),这是为了Python 3.4。所以我想知道怎么在Travis上安装这个依赖,这样测试的时候才能用到它。

我知道可以通过pip从源代码安装PySide,但这个过程非常慢。

如果需要我提供更多信息,请告诉我。

2 个回答

0

一个不错的解决办法是使用Travis的缓存功能,这样可以在不同的构建之间保存一些文件。

只需要在你的

language: python
cache: pip

中添加这段代码,就可以缓存$HOME/.cache/pip这个文件夹了。这样,PySide这个文件只需要构建一次,以后在重新构建你的应用时就可以直接使用,不用再重新构建了。

11

通过apt-get安装目前是不可能的。可以查看一下这个GitHub问题Travis文档

这里有三种其他的选择。

直接使用pip

你的.travis.yml文件中需要包含:

install:
  - pip install PySide

正如你提到的,从源代码构建PySide在travis-ci服务器上会花费很长时间。不过,这种方法是可以保证有效的。

等Travis CI更新到Ubuntu 14.04

这个问题。Python3.4包含在Ubuntu 14.04中。然后,你的.travis.yml可以看起来像这样:

install:
    - sudo apt-get install python3-pyside

自己构建一个wheel

你可以自己构建一个PySide的wheel,这样Travis-CI在使用Python3.4时就不需要从源代码构建PySide了。

按照这些说明,我通过以下方式构建了一个PySide的wheel:

$ 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找到并安装一个更新的PySide版本,避免从pypi下载。

我尝试了一下,基本用法是可以的!

可以查看源代码

这个wheel托管在这个库的gh-pages上。

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

请注意,目前只测试了import PySide。由于这是在Ubuntu 14.04下构建的,而Travis-CI服务器运行的是Ubuntu 12.04,所以我不确定PySide库的功能。如果你遇到问题,可能需要在运行Ubuntu 12.04的机器上重新进行构建。

更新:

以下的python脚本

import PySide
from PySide import QtGui

在Ubuntu 14.04上构建的PySide wheel时会失败。可以查看失败的情况。但是在Ubuntu 12.04上构建PySide时是成功的,查看成功的情况

使用我的PySide wheel

在你的.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

撰写回答