【问题标题】:How to run tox on existing source code repo on Mac?如何在 Mac 上的现有源代码仓库上运行 tox?
【发布时间】:2020-05-14 19:39:35
【问题描述】:

我fork了以下开源Python项目,发布到pypi

https://gitlab.com/potato-oss/google-cloud/gcloud-storage-emulator

我需要对源代码进行一些更改。它有一个为py36py37 配置的tox.ini 文件。我假设我做了我需要的源代码更改,然后运行tox 来测试它。对吗?

如何为此设置我的开发环境?我尝试使用pip install tox 安装,然后在源代码目录中运行tox。 python 3.7 测试似乎工作正常,但 python 3.6 和 flake8 失败并出现以下错误:

ERROR:  py36: InterpreterNotFound: python3.6
  py37: commands succeeded
ERROR:   flake8: InvocationError for command /Users/jacob/workspace/gcloud-storage-emulator/.tox/flake8/bin/python -m pip install --exists-action w .tox/.tmp/package/1/gcloud-storage-emulator-0.0.0.dev0.zip (exited with code 1)

这似乎是有道理的,因为我只通过 brew 安装了 python 3.7。我尝试安装和使用pyenv,但没有得到任何结果。

我需要做什么才能运行tox,并使用两个 python 版本进行测试?另外,运行tox 是正确的开发方法吗?我还应该创建一个虚拟环境吗?

【问题讨论】:

  • 这就是tox的作用,即使没有安装python36,它也会创建那个虚拟环境并在上面执行命令
  • 那么为什么我会收到 InterpreterNotFound 错误?

标签: python virtualenv pyenv tox flake8


【解决方案1】:

运行

tox -e py37,flake8

执行有限的环境列表(不包括 py36)。

或者运行tox -s; --skip-missing-interpreters 表示不要因缺少解释器而导致测试失败。

【讨论】:

  • 谢谢。这跳过了 py36 错误,但我仍然收到 flake8 InvocationError。如果我也想测试 py36,我该怎么做?
  • 安装 Python 3.6 和 flake8。或者只运行tox -e py37
  • 感谢您的帮助。它确实让我可以继续前进,至少在 python 3.7 上进行测试。但它的python 3.6问题仍未解决。我不确定如何在一次调用中测试两个版本。
  • 你需要 Python 3.6 才能运行tox -e py36
猜你喜欢
  • 2017-11-16
  • 1970-01-01
  • 2013-03-08
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 2011-11-02
  • 2023-04-02
相关资源
最近更新 更多