【发布时间】:2019-02-04 10:03:51
【问题描述】:
问题
问题是,是否有其他我没有想到的方法来解决下面的这些问题,或者它真的是使用我们的工具构建 python 风格的答案吗?我有一个解决问题的建议解决方案,但这并不意味着它是正确的答案。
问题
我在一个支持组织工作,我们正在开发工具来支持我们的主要产品。这个产品有它自己运行的操作系统。我们在包装中需要解决三个不同的问题 o
OS 的风格具有我们可以安装到的原始 python 二进制文件,但这限制了我们使用 python 的 OS 版本,它将作为一个单独的团队来管理 OS。预计在接下来的 2 年中,python 3.4、3.5 和 3.6 版本之间的情况会发生变化——这些变化会影响我们一贯使用的库,无论好坏。
我们构建的工具也可在没有外部连接的站点上用作独立工具进行分析。我们目前仅限于“希望无论他们在哪里使用的 python 都能玩得很好”。
我们希望利用更高版本的 python 的显着性能改进,并且不能不升级到 3.6,但这会消除我们使用旧版本的能力,因为在将事情一一打破的python库。
我最初的方法是尝试制作一个可重定位的独立 virtualenv,但是我查看该代码的次数越多,我发现它只是在编辑 PYTHONHOME 和 PATH,如果你希望它是可重定位的,你有无论如何都要复制所有二进制文件,或者只有在主机具有您构建的python版本时才可用。这也有缺点,需要对 virtualenv 脚本进行大量修改,以便修改 shebangs、更新路径等 - 并且需要在每次移动时更新,或者具有动态 shebangs。
感觉不对的建议解决方案
现在我正在考虑创造我们自己的“风味”蟒蛇 - 但这感觉就像在晚宴上用斧头切胡萝卜一样。它解决了可以使用的多个位置的所有问题,所有位置都具有与我们安装的工具一致的最新版本的 python,因此所有用户需要做的就是运行一个脚本来更新 PATH 与/bin 安装这些东西的地方。
回到问题:
是否有其他我没有想到的方法来解决这些问题,或者它真的是使用我们的工具构建 Python 风格的答案吗?我是否因为缺乏经验而感到错误,或者这是我应该考虑的有效答案?
【问题讨论】:
-
你通常会使用
tox- 你已经检查过了吗? -
您能否在您的环境中安装自己构建 python 版本所需的开发工具?
-
为什么不使用 py2exe 或 nuitka 或类似工具将所有内容(您的应用程序和相应版本的 python)自动捆绑到单个应用程序/捆绑包中?
-
我不知道 tox 是一回事 - 我太忙于专注于可重定位的 virtualenvs 并且似乎已经戴上了一些我需要移除的眼罩,因为我知道 virtualenv 不会做我想做的事需要。我会看看这些替代方案。
-
我是否误解了这一点,因为 tox 要求二进制文件已经在主机上?需要明确的是 - 我需要它与 3.6.6 独立。独立是其中的重要方面 - 不一定是 python 版本。 Nuitka 不会通过我们的安全人员——我可以通过一个普通的 3.6.6 二进制文件,但一个新的编译器在幕后执行它自己的魔法不是一个选择。 py2exe 以 Windows 为中心,我们需要它独立于平台。到目前为止,python 的味道似乎是一次解决我所有问题的答案。
标签: python python-3.x virtualenv python-packaging