多版本安装

页面状态

已废弃

easy_install 允许将同一项目的不同版本同时安装到一个由多个程序共享的单一环境中,这些程序必须在运行时(使用 pkg_resourcesrequire 适当的项目版本。

对于许多用例,虚拟环境无需 require 指令的复杂性就能满足此需求。然而,在同一环境中并行安装的优势在于它适用于多个应用程序共享的环境,例如 Linux 发行版中的系统 Python。

基于 pkg_resources 的并行安装的主要限制是,一旦你导入 pkg_resources,它就会锁定 sys.path 上已有的所有内容的默认版本。这可能会导致问题,因为 setuptools 创建的命令行脚本使用 pkg_resources 来查找要执行的入口点。这意味着,例如,如果你的应用程序需要标准 sys.path 上可用的任何非默认版本,则你不能通过 nose 调用 require 测试,或通过 gunicorn 调用 WSGI 应用程序——主应用程序的脚本包装器将锁定默认可用的版本,因此你自己的代码中随后的 require 调用将因虚假的版本冲突而失败。

这可以通过在首次导入 pkg_resources 之前将所有依赖项设置在 __main__.__requires__ 中来解决,但这种方法确实意味着无法使用受影响工具的标准命令行调用——必须编写自定义包装脚本或使用 python3 -c '<command>' 直接调用应用程序的主入口点。

有关更多详细信息,请参阅 pkg_resources 文档