Как я могу установить PySide на Travis?

#python #qt #pyside #travis-ci #python-3.4

#python #qt #pyside #travis-ci #python-3.4

Вопрос:

Мои тесты для Quamash зависят от PySide (или PyQt в конечном итоге) для Python 3.4, поэтому мне интересно, как я могу установить эту зависимость на Travis, чтобы она была доступна для тестов?

Я знаю, что могу установить PySide из исходного кода через pip, но это очень медленный процесс.

Дайте мне знать, если мне нужно предоставить больше информации.

Комментарии:

1. travis-retry sudo apt-get install python3-pyside работает ли у вас? Обратите внимание, что вам также необходимо добавить virtualenv: system_site_packages: true

2. @Will Спасибо за ваше предложение. Я пытался его реализовать, но по какой-то причине Travis не отреагировал на новый коммит и попытался его собрать (я заметил, что не все коммиты приводят к новым сборкам в целом). Я посмотрю, смогу ли я запустить сборку позже.

3. @Will Куда вы добавляете virtualenv: system_site_packages: true часть? Я попытался добавить его на верхний уровень .travis.yml, но оказалось, что он недействителен.

4. Ознакомьтесь с scikit-learn’s .travis. yml и их сценарий установки . Вы также можете проверить синтаксис .travis.yml с помощью WebLint

5. @Я изменил .travis. yml , чтобы теперь он выглядел хорошо, но system_site_packages: true настройка нарушает сборку : (

Ответ №1:

Установка через 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
  

Создайте свое собственное колесо

Вы можете создать свое собственное колесо PySide, поэтому сборкам Travis-CI с использованием Python3.4 не нужно создавать 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
  

Затем вы можете разместить это колесо где-нибудь и получить к нему доступ с помощью 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 , с правильным соглашением об именовании. Используется --no-index для предотвращения поиска и установки pip более нового PySide из pypi.

Я пошел дальше и попробовал это, базовое использование работает!

Смотрите источник.

Колесо размещено на gh-страницах репозитория.

Обратите внимание, что на моей машине с Ubuntu 14.04 при создании колеса был создан файл dist/PySide-1.2.2-cp34-cp34m-linux_x86_64.whl размером примерно 17 МБ. Когда я вместо этого включил --standalone тег на этапе сборки, размер файла составлял ~ 77 МБ.

Обратите внимание, что на данный момент протестирован только 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. Посмотрите на сбой. Однако это удается, когда PySide построен на Ubuntu 12.04, см. Успех.

Используя мое колесо 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
  

Комментарии:

1. Спасибо, ценю тщательное изложение!

2. Спасибо за отзыв! Я попытался установить PySide, используя автономное колесо в среде conda, и я не смог заставить его работать. Оказывается, мне просто нужно было запустить python pyside_postinstall.py -install

Ответ №2:

Хорошим решением является использование функции кэширования Travis для кэширования колес в сборках.

Добавление

 language: python
cache: pip
  

в ваши .travis.yml кеши $HOME/.cache/pip . Таким образом, колесо PySide будет создано один раз и сохранится при перестроении вашего приложения.