C 库有一种很好的后期绑定形式,其中记录了链接期间使用的库的确切版本,因此可执行文件可以找到正确的文件,即使安装了同一个库的多个版本。
可以在 Python 中完成相同的操作吗?
更具体地说,我在一个 Python 项目中工作,该项目使用了一些 3rd-party 库,例如 paramiko。Paramiko 现在是 1.7.4 版本,但一些发行版带有它的旧版本,同时提供大约相同版本的 Python 解释器。
自然,我想支持尽可能多的配置,而不仅仅是最新的发行版。但是,如果我从旧发行版提供的版本升级 paramiko 的已安装版本,我 1) 使包管理器的生活变得艰难 2) 由于库版本不兼容,可能会破坏一些现有的应用程序,并且 3) 如果包管理器可能会损坏决定覆盖我的自定义安装。
是否有可能在 Python 中干净地解决这个问题?(即,我将如何进行设置,以及代码应该是什么样的)。理想情况下,它只会在 site_libraries 中安装几个版本的库并让我的脚本选择正确的版本,而不是使用一组手动安装的库来维护一个私有目录。
PS:我可以将 Python 程序编译为二进制文件,并附带所有必要的依赖项,但这有点违背使用发行版提供的解释器的想法。我在 Windows 上做。