我开发支持不同Python版本的Python应用程序。我使用
pyenv
在我的系统上拥有多个 Python 版本(Linux,如果重要的话)并在它们之间进行切换。
现在我还需要构建带有扩展的 Python 包,因为并非所有扩展包都发布了最新 Python 版本的轮子。我的系统有开发头文件,保证只适用于一个 Python 版本(包
python3-dev
,在我的系统上,支持 Python 3.10.6)。因此尝试构建(一些)包,例如Python 3.12 pyenv
环境失败。
理想情况下,我希望能够说:
$ pyenv use 3.12
$ pip wheel <package> # <-- and GCC is using headers for Python 3.12, not for the version for which the development headers are installed system-wide
这是一个合理的期望吗?怎么才能实现呢?
肯定满足这一点的一个选项(是否适合您的工作流程是一个单独的问题)是使用 docker 容器。
对于Python来说,这相对容易:
docker run -it python:3.10 bash
将您带入 bash shell,其中
python
是 python 3.10,安装了 gcc,并且存在 python 标头(尝试使用 `python-config --includes 进行检查)。