打包使用多个python版本的项目

时间:2018-08-26 08:04:03

标签: python python-3.x virtualenv virtualenvwrapper pipenv

我正在尝试打包一个主要基于python 3但使用一些python 2子项目的项目(由于某些特定的依赖关系)。因此,python 3模块使用python 2程序的方式是使用Popen显式调用它们(因为我们不能只导入它们)。

我尝试使用pipenv,但似乎无法为python 2和python 3创建环境。 我尝试创建一个python脚本,该脚本仅从所有项目中创建轮子(使用这两个版本),但这似乎有些错误和错误。

问题是-打包使用多个python版本的项目的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

问题不仅在于包装。您将不得不为每个Python版本单独使用解释器工具,因此,您将拖曳两个二进制文件而不是一个二进制文件。我确信已经有很多供应商这样做了-例如Dropbox在UI和同步进程之间的给定时间在计算机上运行了多个基于Python的进程相互通信。

第二个问题是在解释器之间共享结果,这是execnet library的目标之一,但基本上是在本地进程空间之外建立一个共享的内存通道,并在每个进程之间定义了一个通用的序列化协议。如果您正在调用的命令没有确定的结果,并且您想在返回结果后进一步操作结果,Popen并不是很可靠。

例如,如果您想将应用程序托管在外部服务器上或使用Docker,则可以将这种IPC方法通过网络扩展到RPC或HTTP,这是微服务受欢迎的原因之一-您可以独立部署和扩展不同的服务“有限的上下文”