В моем проекте я (должен) использовать функцию, включенную в Numpy 1.8, но не в более ранних версиях (опция formatter
numpy.set_printoptions
).
Поскольку машины сборки Travis CI основаны на Ubuntu 12.04, по умолчанию у меня есть только доступность Numpy 1.6.1. Затем я попытался установить пакет Numpy-1.8.1-Debian для Ubuntu 14.04 и его зависимости вручную, что привело к дальнейшим проблемам:
Мне нужно установить пакеты libblas3
и liblapack3
, чтобы установить Numpy 1.8, что невозможно, если в системе установлены liblapack3gf
и libblas3gf
(которые есть по умолчанию), поскольку пакеты "сломают" их. Если я apt-get remove
их, автоматически libatlas3gf-base
устанавливается с помощью той же команды apt-get
(что не соответствует стандартной системе Ubuntu, я даже устанавливаю ее на свою локальную машину Чтобы убедиться). Если я затем попытаюсь удалить Vlibatlas3gf-baseV, снова liblapack3gf
и libblas3gf
будут автоматически установлены снова.
Я не знаю, как справиться с этой проблемой, или как обойти это, чтобы заставить Numpy 1.8 работать с Travis. Я также пробовал предложения по обновлению Numpy через pip
при условии здесь, но в Travis это не сработало.
Любая помощь очень ценится!
Большое спасибо!
Решение:
Я выполнил r-й ответ на следующий .travis.yml
файл с дополнительной помощью здесь и здесь:
language: python
matrix:
include:
- python: 2.7
env: NUMPY=1.8 SCIPY=0.13
notifications:
email: false
before_install:
- travis_retry wget http://repo.continuum.io/miniconda/Miniconda-3.8.3-Linux-x86_64.sh -O miniconda.sh
- chmod +x miniconda.sh
- bash miniconda.sh -b -p $HOME/miniconda
- export PATH=/home/travis/miniconda/bin:$PATH
- conda update --yes conda
install:
- conda create --yes -n test python=$TRAVIS_PYTHON_VERSION
- source activate test
- conda install --yes numpy=$NUMPY scipy=$SCIPY matplotlib pip
- pip install setuptools
- [ ... some other packages to install ... ]
- python setup.py install
script:
- nosetests
Теперь все работает так, как ожидалось. Обратите внимание: вы сможете не импортировать и использовать PyLab с этой настройкой, см. Комментарии ниже для объяснений.
Создание научных модулей python из источников (будь то компиляция напрямую или с помощью pip
) в непрерывном потоке интеграции медленный (15 минут для numpy, еще 15 минут, если вам нужен scipy и т.д.), и пустая трата ресурсов,
Вам лучше использовать двоичный дистрибутив numpy, например, тот, который предоставляется Anaconda. Для Travis CI вы можете использовать
language: python
before_script:
- wget http://repo.continuum.io/miniconda/Miniconda-3.8.3-Linux-x86_64.sh -O miniconda.sh
- chmod +x miniconda.sh
- export PATH=/home/travis/miniconda/bin:$PATH
- conda install --yes numpy=1.8
Также рассмотрите этот более полный пример установки для Travis CI.
Я попытался установить Numpy 1.8.2 с pip
на Travis CI и, похоже, сработал.
Вот содержимое моего файла .travis.yml
:
language: python
before_script:
- pip uninstall numpy -y
- pip install -I numpy==1.8.2
script: python -c 'import numpy; print numpy.version.version'
Вы можете увидеть, что он успешно печатает 1.8.2
в этом журнале сборки.
Надеюсь, это поможет!
numpy
теперь pre-installed на Travis CI. В редких случаях, когда предварительно установленная версия старше последней версии numpy
, двоичные версии numpy
являются доступный из PyPI, поэтому нет необходимости создавать numpy
в Travis CI.
Выдержка из пример .travis.yml
файл:
addons:
apt:
packages:
- gfortran
- libatlas-dev
- libatlas-base-dev
- liblapack-dev
- libgmp-dev
- libmpfr-dev
before_install:
- pip install -U --only-binary=numpy,scipy numpy scipy
sudo apt-get install python-qt4
. В качестве примечания следует по возможности избегать использованияpylab
, особенно в неинтерактивной среде, и предпочтение следует отдавать явному импорту:import numpy as np
,import matplotlib.pyplot as plt
(если вам нужны графики) и т. Д.