如何使用Tox and Poetry在CircleCI中设置多个口译员?

时间:2019-03-23 20:47:15

标签: python django circleci tox python-poetry

我正在为Django设置一个可重用的软件包。我将Poetry用作程序包管理器,并使用tox在多个python环境中进行测试。但是,我在CircleCI上继续收到以下错误:

py27-django111: commands succeeded
ERROR:  py34-django111: InterpreterNotFound: python3.4
ERROR:  py34-django20: InterpreterNotFound: python3.4
ERROR:  py34-django21: InterpreterNotFound: python3.4
  py35-django111: commands succeeded
  py35-django20: commands succeeded
  py35-django21: commands succeeded
  py36-django111: commands succeeded
  py36-django20: commands succeeded
  py36-django21: commands succeeded
ERROR:  py37-django111: InterpreterNotFound: python3.7
ERROR:  py37-django20: InterpreterNotFound: python3.7
ERROR:  py37-django21: InterpreterNotFound: python3.7

我找不到有关如何解决此问题的任何报告,我在CircleCI中看到了不同的Django软件包项目,但是它们在构建环境方面的方法不同。

我的circle.yml文件:

version: 2

jobs:
  development:
    docker:
      - image: circleci/python:3.6.8

    steps:
      - checkout
      - run:
          name: Install
          command: |
            poetry install
      - run:
         name: Lint
         command: |
            poetry run flake8 django_package
      - run:
          name: Test
          command: |
            poetry run tox
      - run:
         name: Codecov
         command: |
            poetry run codecov

  deployment:
      docker:
        - image: circleci/python:3.6.8

      steps:
        - checkout
        - run:
            name: Publish
            command: |
              poetry publish --build --username "${PYPI_USERNAME}" --password "${PYPI_PASSWORD}" --no-interaction

workflows:
  version: 2

  development-workflow:
    jobs:
      - development

  deployment-workflow:
    jobs:
      - development:
          filters:
            tags:
              only: /v[0-9]+(\.[0-9]+)*/
            branches:
              ignore: /.*/
      - deployment:
          requires:
            - development
          filters:
              tags:
                only: /v[0-9]+(\.[0-9]+)*/
              branches:
                ignore: /.*/

我的tox.ini文件:

[tox]
skipsdist = True
envlist =
  {py27}-django{111}
  {py34,py35,py36,py37}-django{111,20,21}

[testenv]
whitelist_externals = poetry
skip_install = true
commands =
    poetry run coverage run --branch runtests.py tests

deps =
  django111: Django>=1.11,<2.0
  django20: Django>=2.0,<2.1
  django21: Django>=2.1

我的pyproject.toml文件:

[tool.poetry.dependencies]
python = "*"
django = "*"

[tool.poetry.dev-dependencies]
coverage = "^4.5"
codecov = "^2.0"
flake8 = "^3.7"
tox = "^3.7"

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

1 个答案:

答案 0 :(得分:1)

我发现为了使用Tox在CircleCI上运行python 3.4和3.7,应该添加py340和py370而不是py34和py37。走吧!