微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用特定的较旧的 setuptools 版本创建 virtualenv

我需要支持一个旧版 python (3.5) 的项目,我正在努力创建一个 virtualenv,因为最新的 setuptools (>51) 不再支持 python==3.5。当它尝试运行包含“future”语法的 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 将在指定目录中查找轮子,但将使用 pip 的标准算法进行选择要安装的轮子”,因此将忽略我尝试指向它的旧 setuptools 版本。

解决方法

@hoefling 使用 python -m venv 的评论似乎是最好的解决方案,我可以从 apt 获得这个包,并且应该总是给我一个与基本 python 版本兼容的版本。然后,我可以在构建 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。