2015-06-02 18 views
6

All'interno del mio progetto, I (necessario) utilizzare una funzionalità inclusa in Numpy 1.8, ma non nelle versioni precedenti (l'opzione formatter di).Installa Numpy 1.8 in Travis CI

Poiché le macchine di compilazione di Travis CI sono basate su Ubuntu 12.04, per impostazione predefinita sono disponibile solo Numpy 1.6.1. Ho poi provato ad installare il Numpy-1.8.1-Debian-pacchetto per Ubuntu 14.04 ed è dipendenze manualmente, che ha portato ad ulteriori problemi:

necessario installare i pacchetti libblas3 e liblapack3 poter installare Numpy 1.8, che non è possibile quando liblapack3gf e libblas3gf sono installati sul sistema (che sono lì per impostazione predefinita), poiché i pacchetti "li interromperanno". Se I viene installato tramite lo stesso apt-get -comando (che non è il caso su un sistema Ubuntu standard, ne ho anche installato uno sulla mia macchina locale per essere sicuro). Se poi provo a disinstallare Vlibatlas3gf-baseV, di nuovo liblapack3gf e libblas3gf vengono installati di nuovo automaticamente.

Non so davvero come gestire questo problema, o come aggirarlo per ottenere Numpy 1.8 che funziona con Travis. Ho anche provato i suggerimenti per l'aggiornamento di Numpy tramite pip fornito here, ma in Travis questo non ha funzionato.

Qualsiasi aiuto è molto apprezzato!

Grazie mille!


La soluzione:

ho completato la risposta di RTH al seguente .travis.yml -file, con ulteriore aiuto da here e here:

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 

Ora tutto funziona come previsto. Nota: non sarà non essere in grado di importare e utilizzare PyLab con questa configurazione, vedere i commenti sotto per le spiegazioni.

+0

Probabilmente necessario installare PyQt4 importare pylab (si veda questo [risposta] (https://stackoverflow.com/questions/19231944/anaconda-unable-to-import -pylab)), 'sudo apt-get install python-qt4'. Come nota a margine, l'uso di 'pylab' dovrebbe essere evitato quando possibile, specialmente in un ambiente non interattivo, e le importazioni esplicite sono da preferire:' import numpy come np', 'importa matplotlib.pyplot as plt' (se tu bisogno di grafici) ecc. – rth

+0

@ rth Perché dovrebbe essere evitato? Perché se è ragionevole evitarlo, tenderei piuttosto a modificare il mio codice piuttosto che cercare di far funzionare PyLab in Travis. – mindm49907

+0

Beh, se esegui 'da pylab import *' molte cose vengono importate nello spazio dei nomi, da 'numpy',' scipy', 'matplotlib' ecc e non hai realmente il controllo di ciò che sta accadendo. Soprattutto se fai test unitari, è molto meglio importare esplicitamente i moduli richiesti. Questo non è in realtà correlato al tuo problema, ma è solo che il tuo backend matplotlib di default sembra richiedere PyQt4 (sia che tu usi pylab o meno), puoi anche cambiare il backend per dire "Agg" per evitare il problema. – rth

risposta

3

Costruire moduli python scientifici da sorgenti (sia che si compili direttamente o con pip) in un flusso di lavoro di integrazione continua sia lento (15 min per numpy, altri 15 minuti se è necessario scipy, ecc.) E uno spreco di risorse.

Si consiglia di utilizzare una distribuzione binaria di numpy, come quella fornita da Anaconda.Per Travis CI si potrebbe usare,

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 

hanno anche un'occhiata a questo più completa setup example per Travis CI.

2

Ho provato ad installare Numpy 1.8.2 con pip su Travis CI e sembra aver funzionato.

Ecco il contenuto del mio file .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' 

Si può vedere che si sta stampando con successo 1.8.2 in questo build log.

Spero che questo aiuti!

+1

Grazie per la risposta, ma, come altri hanno sottolineato, la costruzione richiede del tempo, quindi vorrei testare prima le altre possibilità, ma potrei tornare alla soluzione. Non funzioneranno per me. – mindm49907

0

numpy è ora pre-installed su Travis CI. Per la rara occasione in cui la versione preinstallata è precedente all'ultima versione numpy, binary releases di numpy sono available from PyPI, quindi non è necessario creare numpy su Travis CI.

Estratto da un example .travis.yml file:

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