英文:
tox skipped because could not find python interpreter
问题
我在使用 tox 时遇到了问题。首先要说的是,我并不是虚拟环境的专家,我更喜欢使用 conda 环境,我觉得它们更容易使用和理解。
所以,我的系统背景是,我有一个运行 Ubuntu 18 的系统,Python 版本是 3.6.9。我还有一个 conda 环境,其中 Python 版本是 3.9.16,以及一个带有 Python 3.8.3 的 Anaconda 基本环境。
不管怎样,我想要使用 tox 进行测试,使用以下 tox.ini
文件:
[tox]
envlist=py37
skipsdist = True
[testenv]
deps=pytest
commands= pytest
在安装了 tox 后(我分别在 conda 环境内外安装了它),当我运行 tox
时,我得到了以下错误:
py37: skipped because could not find python interpreter with spec(s): py37
我明白了,pytest 3.7 没有被安装。但我以为这就是虚拟环境的作用...如果我还需要手动安装版本的话,使用 tox 有什么意义呢?
而且如果我想要测试多个版本,难道我需要手动安装每个版本吗?
更重要的是,我如何安装多个版本呢?
在 conda 中,我可以在每个环境中拥有一个版本。在这种情况下,如何在 tox 中高效使用呢?
英文:
I am having a problem using tox. I have to say first that I am not an expert on virtual environments, and I prefer to use conda environments, I find them much more easy to use and understand.
So as the background of my system I have a Ubuntu 18 system, where Python is 3.6.9. I also have a conda environment where Python is 3.9.16, and an Anaconda base environment with Python 3.8.3
Anyway I want to use tox for testing with this tox.ini
file
[tox]
envlist=py37
skipsdist = True
[testenv]
deps=pytest
commands= pytest
After installing tox (and I installed it in both inside the conda environment and outside), when I ran tox
I got:
py37: skipped because could not find python interpreter with spec(s): py37
I get it, pytest 3.7 is not installed.
But I thought that is what virtual environments do... what is the point of me using tox if I have to install manually the version ?
And if I want to test it with multiple versions, do I have to install manually every version?
And what is more important, how can I install several versions?
With conda I have one version per environment.
How can I use tox efficiently here?
答案1
得分: 2
这不是pytest的版本有问题,py37
指的是Python版本3.7,所以它没有找到与之关联的解释器。
您可以在Ubuntu 18.04中安装它:
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7
要有效地使用tox,您需要学会如何正确配置tox.ini
文件以及tox环境的工作原理。要启动任何py3X
,将执行命令(通常是pytest
)在您的主要环境中,通常定义为Python的3.X版本。
另一个提示是使用-p
标志来并行执行不同的环境,例如tox -p -e py37,py39
,这将同时在python3.7
和python3.9
中执行testenv
。
英文:
It's not the version pytest which is wrong, py37
refers to Python version 3.7, so it didn't find the interpreter associated with it.
You can install it in Ubuntu 18.04 by:
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.7
To use effectively tox you need to learn how to configure properly the tox.ini
file and how the tox environments works. To start any py3X
will execute the commands (usually pytest
) in your main environment, usually defined as testenv
with the version 3.X of Python.
Other tip is to use the flag -p
for parallel execution of different environments, e.g. tox -p -e py37,py39
which will execute testenv
in python3.7
and python3.9
simultaneously.
答案2
得分: 1
tox 要求预先安装Python解释器。Python解释器的安装方式不是tox的关注点。
安装多个额外的Python解释器的一些想法:
- deadsnakes,适用于Ubuntu
- pyenv
- 有办法让tox使用由conda安装的Python解释器,这里可能有一些可行的建议。
英文:
tox requires Python interpreters to already be installed beforehand. How the Python interpreters get installed is not tox's concern.
Some ideas to install multiple additional Python interpreters:
- deadsnakes which is specific to Ubuntu
- pyenv
- there are ways to let tox use Python interpreters installed by conda, here maybe some actionable suggestions
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论