#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
с помощью WebLint5. @Я изменил .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 будет создано один раз и сохранится при перестроении вашего приложения.