gpt4 book ai didi

python - 带有 tox : how to test multiple Python environments? 的简单 Python 项目的 CircleCI

转载 作者:行者123 更新时间:2023-12-05 03:55:44 25 4
gpt4 key购买 nike

我有一个 Python project为此,我使用 tox 来运行基于 pytest 的测试。我正在尝试配置项目以在 CircleCI 上构建。

tox.ini 将 Python 3.6 和 3.7 都列为环境:

envlist = py{36,37,},coverage

我可以在使用 Python 3.7 版的 conda 虚拟环境中的本地计算机上成功运行 tox

在 CircleCI 上,我使用标准的 Python 虚拟环境,因为这是示例(“入门”)配置中提供的。当 tox 尝试创建 Python 3.6 环境时,tox 测试失败:

py36 create: /home/circleci/repo/.tox/py36
ERROR: InterpreterNotFound: python3.6

看起来,当您使用这种虚拟环境时,tox 只能找到相同版本的解释器,而如果使用 conda 虚拟环境,它就会以某种方式知道如何构建环境,只要它们是较低版本.至少对于我的情况(在 Python 3.7 conda 环境中运行 tox 的 Python 3.6 和 3.7 环境),这工作正常。

我目前使用的 CircleCI 配置文件如下所示:

# Python CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-python/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
- image: circleci/python:3.7

working_directory: ~/repo

steps:
- checkout

# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "requirements.txt" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-

- run:
name: install dependencies
command: |
python3 -m venv venv
. venv/bin/activate
pip install -e .
pip install tox

- save_cache:
paths:
- ./venv
key: v1-dependencies-{{ checksum "requirements.txt" }}

# run tests with tox
- run:
name: run tests
command: |
. venv/bin/activate
tox

- store_artifacts:
path: test-reports
destination: test-reports

在 CircleCI 上使用 tox 测试多个环境的最佳实践是什么?我应该在 CircleCI 中使用 conda 而不是 venv 吗?如果是这样,我该如何添加它?或者有没有办法继续使用 venv,也许通过修改它的环境创建命令?

编辑

我现在发现这不是 CircleCI 特有的,因为我在 Travis CI 上运行这个 tox 时遇到了类似的错误。此外,我已经确认这在我的本地计算机上使用 venv 创建的 Python 3.7 虚拟环境如所宣传的那样工作,py36 和 py37 环境都成功运行。

最佳答案

如果您使用 multi-python docker image它允许您仍然使用 tox 在多个不同的环境中进行测试,例如

version: 2

jobs:
test:
docker:
- image: fkrull/multi-python
steps:
- checkout
- run:
name: Test
command: 'tox'

workflows:
version: 2
test:
jobs:
- test

关于python - 带有 tox : how to test multiple Python environments? 的简单 Python 项目的 CircleCI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59972209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com