多版本安装

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

对于许多用例,虚拟环境可以满足这一需求,而不需要 require 指令。但是,在同一个环境中进行并行安装的优势在于,它适用于多个应用程序共享的环境,例如Linux发行版中的SystemPython。

其主要局限性 pkg_resources 基于并行安装是指一旦导入 pkg_resources 它锁定在 违约 sys.path上已可用的所有内容的版本。这会导致问题,因为 setuptools 创建的命令行脚本使用 pkg_resources 找到要执行的入口点。这意味着,例如,您不能使用 require 通过调用的测试 nose 或通过调用wsgi应用程序 gunicorn 如果应用程序需要标准上可用的任何内容的非默认版本 sys.path -主应用程序的脚本包装器将锁定默认情况下可用的版本,因此 require 调用您自己的代码失败,出现虚假版本冲突。

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

参考 pkg_resources documentation 了解更多详细信息。