使用特定的、较旧的 setuptools 版本创建 virtualenv

Create virtualenv with specific, older, setuptools version

我需要使用旧版 python (3.5) 来支持一个项目,我正在努力创建一个 virtualenv,因为最新的设置工具 (>51) 不再支持 python= =3.5。它在安装软件包时抛出语法错误,因为它试图 运行 包含“未来”语法的 setuptools.setup 函数。我正在尝试找出一种方法来创建一个默认使用旧版本的 setuptools 的 virtualenv。

我目前的解决方法是正常创建 virtualenv,然后降级 setuptools。这目前有效,但如果其他 setuptools 模块更改语法使得 pip install setuptools==old 不能 运行.

,则可能会随时中断
virtualenv -p python3 venv
source venv/bin/activate
pip install --upgrade setuptools==50.3.2 # This line could break in future
pip install my_project

我可以看到 virtualenv --extra-search-dir 选项(https://virtualenv.pypa.io/en/legacy/userguide.html#the-extra-search-dir-option),但默认为它可以找到的最新版本,因为“virtualenv 将在指定目录中查找 wheel,但将使用 pip 的标准算法用于选择要安装的轮子”,因此将忽略我尝试指向的旧安装工具版本。

@hoefling 关于使用 python -m venv 的评论似乎是最好的解决方案,我可以从 apt 获得这个包并且应该总是给我一个与基础 [=16] 兼容的版本=] 版本。然后我可以在构建 venv 后升级到 setuptools/pip 的固定版本。

apt update
apt install python3-venv python3-pip
python3 -m venv venv
source venv/bin/activate
pip install --upgrade setuptools==50.3.2 pip==20.3.3