简体   繁体   English

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

[英]How to setup multiple interpreters in CircleCI using Tox and Poetry?

I'm setting up a reusable package for Django. 我正在为Django设置一个可重用的包。 I'm using Poetry as the package manager and I'm using tox for testing across multiple python environments. 我将Poetry用作程序包管理器,并使用tox在多个python环境中进行测试。 However, I keep on receiving the following error on CircleCI: 但是,我在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

I couldn't find any reports on how to solve this issue and I've seen different Django package projects in CircleCI however they differ on their approaches to build the environments. 我找不到有关如何解决此问题的任何报告,并且在CircleCI中看到了不同的Django软件包项目,但是它们在构建环境的方法上有所不同。

My circle.yml file: 我的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: /.*/

My tox.ini file: 我的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

My pyproject.toml file: 我的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"

I found that in order to run python 3.4 and 3.7 on CircleCI using Tox, one should add py340 and py370 instead of py34 and py37. 我发现为了使用Tox在CircleCI上运行python 3.4和3.7,应该添加py340和py370而不是py34和py37。 Go figure! 去搞清楚!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM