如何在travis上使用osx环境构建python项目

如何在travis上使用osx环境构建python项目,python,macos,travis-ci,conda,miniconda,Python,Macos,Travis Ci,Conda,Miniconda,我正在尝试为Travis上的一个项目构建osx支持。问题是osx没有本地发布python virtualenv。这就是问题所在。我已经处理了这个问题,并相应地修改了我的travis文件。但我的构建在osx上还是失败了。是一个travis构建链接。 这是我的travis.yml文件 language: python matrix: include: # Use the built in venv for linux builds - os: linux

我正在尝试为Travis上的一个项目构建osx支持。问题是osx没有本地发布python virtualenv。这就是问题所在。我已经处理了这个问题,并相应地修改了我的travis文件。但我的构建在osx上还是失败了。是一个travis构建链接。 这是我的travis.yml文件

language: python
matrix:
    include:
        # Use the built in venv for linux builds
        - os: linux
          sudo: required
          python: "2.7"
          dist: trusty

        - os: linux
          sudo: required
          python: "3.5"
          dist: trusty

        - os: linux
          sudo: required
          python: "3.6"
          dist: trusty

        # Use generic language for osx
        - os: osx
          language: generic
          python: "2.7"

        - os: osx
          language: generic
          python: "3.5"

        - os: osx
          language: generic
          python: "3.6"

before_install:
 - .travis/before_install.sh
 - mkdir $HOME/data
 - echo $PWD
 - cd $HOME/data && wget ftp://ftp.astron.nl/outgoing/Measures/WSRT_Measures.ztar && tar xf WSRT_Measures.ztar && cd -
 - echo $PWD
install:
 - export PATH="$HOME/miniconda/bin:$PATH"
 - source activate testenv
 - export CPATH="$HOME/miniconda/envs/testenv/include:$CPATH"
 - echo $CPATH
 - python setup.py develop
 - pip install -r tests/requirements.txt
 - pip install coveralls travis-sphinx
script:
 - nosetests --with-coverage
 - travis-sphinx --nowarn -s doc build
这是我的before_install.sh文件

set -e
set -v

if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then 
    if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then
        brew install python;
        virtualenv venv -p python;
        source venv/bin/activate;
    else
        brew install python3;
        virtualenv venv -p python3;
        source venv/bin/activate;
    fi
fi


if [ "$TRAVIS_OS_NAME" = linux ]; then
    sudo apt-get update
    MINICONDAVERSION="Linux"
else
    MINICONDAVERSION="MacOSX"
fi

if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then
  wget https://repo.continuum.io/miniconda/Miniconda2-latest-$MINICONDAVERSION-x86_64.sh -O miniconda.sh;
else
  wget https://repo.continuum.io/miniconda/Miniconda3-latest-$MINICONDAVERSION-x86_64.sh -O miniconda.sh;
  fi

bash miniconda.sh -b -p $HOME/miniconda
export PATH="$HOME/miniconda/bin:$PATH"
hash -r
conda config --set always_yes yes --set changeps1 no
conda update -q conda
conda config --add channels conda-forge
# Useful for debugging any issues with conda
conda info -a
which python
conda create -q -n testenv python=$TRAVIS_PYTHON_VERSION casacore=2.3.0

echo "measures.directory: /home/travis/data" > $HOME/.casarc
当我试图构建conda环境时,它声明了以下错误

CondaValueError: invalid package specification: python=

如评论中推荐的@randomir,
看这张照片

确保您定义了
TRAVIS\u PYTHON\u版本

看起来您的
TRAVIS\u PYTHON\u版本
变量未定义。在安装.sh之前,尝试将
env
放在
文件的开头,并检查生成输出。另外,您可以看看我是如何在OS X上处理Python 2和3测试的。我没有得到您想要说的。你能再解释一下吗?我应该像你一样使用毒气吗?对不起,我有点新手。看。关于我的第一条评论,请参见
manenv
。通过在脚本中调用
env
,可以检查运行Travis任务时定义的所有环境变量。@randomir谢谢!!我在TRAVIS中定义了
TRAVIS\u PYTHON\u版本
,它成功了!!这个问题已经在joshkmartinez解决了。不过谢谢你!:)@ShibasisPatel那么也许你应该接受一个答案,这样这个问题就标记为“已回答”。