2015-06-02 26 views
6

Trong dự án của tôi, tôi (phải) sử dụng một tính năng có trong Numpy 1.8, nhưng không có trong các phiên bản trước đó (tùy chọn formatter của numpy.set_printoptions).Cài đặt Numpy 1.8 trong Travis CI

Vì máy xây dựng Travis CI dựa trên Ubuntu 12.04, theo mặc định, tôi chỉ có sẵn Numpy 1.6.1. Sau đó tôi đã cố gắng cài đặt gói Numpy-1.8.1-Debian cho Ubuntu 14.04 và các phụ thuộc theo cách thủ công, dẫn đến các vấn đề khác:

Tôi cần cài đặt gói libblas3liblapack3 để có thể cài đặt Numpy 1.8, điều này là không thể khi liblapack3gflibblas3gf được cài đặt trên hệ thống (có sẵn theo mặc định), vì các gói sẽ "ngắt" chúng. Nếu tôi apt-get remove, tự độnglibatlas3gf-base đang được cài đặt thông qua cùng một apt-get -command (không phải là trường hợp trên hệ thống Ubuntu chuẩn, tôi thậm chí còn đặt một máy trên máy cục bộ của mình để đảm bảo). Nếu sau đó tôi cố gắng gỡ cài đặt Vlibatlas3gf-baseV, một lần nữa liblapack3gflibblas3gf sẽ tự động được cài đặt lại.

Tôi không thực sự biết cách xử lý vấn đề này, hoặc làm thế nào để có được nó để có được Numpy 1.8 làm việc với Travis. Tôi cũng đã thử các đề xuất để nâng cấp Numpy qua pip được cung cấp here, nhưng trong Travis điều này không hoạt động.

Mọi trợ giúp đều được đánh giá cao!

Cảm ơn bạn rất nhiều!


Giải pháp:

tôi hoàn thành câu trả lời rth để các .travis.yml -file sau, với sự giúp đỡ hơn nữa từ herehere:

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 

Bây giờ mọi thứ hoạt động như mong đợi. Xin lưu ý: bạn sẽ không phải mới có thể nhập và sử dụng PyLab với thiết lập này, hãy xem các nhận xét bên dưới để biết giải thích.

+0

Bạn có thể cần phải cài đặt PyQt4 nhập pylab (xem này [trả lời] (https://stackoverflow.com/questions/19231944/anaconda-unable-to-import -pylab)), 'sudo apt-get cài đặt python-qt4'. Lưu ý phụ, nên tránh sử dụng 'pylab' khi có thể, đặc biệt là trong một môi trường không tương tác, và nhập khẩu rõ ràng sẽ được ưu tiên:' import numpy as np', 'import matplotlib.pyplot as plt' (nếu bạn cần lô) vv. – rth

+0

@rth Tại sao nên tránh? Bởi vì nếu nó là hợp lý để tránh nó, tôi sẽ có xu hướng thay vì đặt nỗ lực trong việc thay đổi mã của tôi hơn để tiếp tục cố gắng để có được PyLab làm việc trong Travis. – mindm49907

+0

Vâng, nếu bạn làm 'từ nhập khẩu pylab *' rất nhiều thứ được nhập khẩu trong không gian tên, từ 'numpy',' scipy', 'matplotlib' vv và bạn không thực sự kiểm soát những gì đang xảy ra. Đặc biệt nếu bạn làm bài kiểm tra đơn vị, tốt hơn là nhập khẩu các mô-đun yêu cầu một cách rõ ràng. Điều này không thực sự liên quan đến vấn đề của bạn, nó chỉ là phần mềm matplotlib mặc định của bạn dường như yêu cầu PyQt4 (cho dù bạn dùng pylab hay không), bạn cũng có thể thay đổi backend để nói 'Agg' để tránh vấn đề. – rth

Trả lời

3

Xây dựng mô-đun python khoa học từ nguồn (cho dù biên dịch trực tiếp hoặc với pip) trong luồng công việc tích hợp liên tục chậm (15 phút đối với numpy, 15 phút nữa nếu bạn cần scipy, v.v) và lãng phí tài nguyên.

Bạn nên sử dụng phân phối nhị phân có nhiều vón cục, chẳng hạn như phân phối do Anaconda cung cấp.Đối với Travis CI bạn có thể sử dụng,

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 

Cũng có một cái nhìn lúc này hoàn chỉnh hơn setup example cho Travis CI.

2

Tôi đã thử cài đặt Numpy 1.8.2 với pip trên Travis CI và có vẻ như đã hoạt động.

Dưới đây là nội dung của tập tin .travis.yml tôi:

language: python 

before_script: 
    - pip uninstall numpy -y 
    - pip install -I numpy==1.8.2 

script: python -c 'import numpy; print numpy.version.version' 

Bạn có thể thấy rằng nó được thành công in 1.8.2 trong build log này.

Hy vọng điều này sẽ hữu ích!

+1

Cảm ơn câu trả lời của bạn, nhưng khi những người khác chỉ ra xây dựng cần có thời gian, vì vậy tôi muốn kiểm tra các khả năng khác trước, nhưng có thể quay lại giải pháp của bạn tôi sẽ không làm việc cho tôi. – mindm49907

0

numpy hiện là pre-installed trên Travis CI. Trong trường hợp hiếm hoi, phiên bản được cài đặt trước cũ hơn phiên bản numpy mới nhất, binary releases của numpyavailable from PyPI, vì vậy không cần phải xây dựng numpy trên Travis CI.

Trích từ 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