在我参与的一个项目中,我们在 Ubuntu 14.04(使用 Python 3.4)上使用 compileall.compile_dir 打包我们的 python 产品。pyc 文件的目录等被捆绑(tar.gz 文件)和分发。更改文件名以删除文件名的 cpython-34 部分。
我们有一个运行 Ubuntu 16.04 的新测试环境,该环境具有 Python 3.5,并希望运行/测试代码。当我们解压并运行它时,我们得到一个错误:
$ ./configure
/usr/bin/python3: can't find '__main__' module in '/home/user/product/configure.pyz'
如果我手动解压缩 pyz 文件并尝试从命令行运行 python,则在导入内容后,我会收到一条消息,说明它是 3.4 二进制文件。相反,如果我在 3.5 机器上构建包,我完全可以在 3.5 机器上运行它,但是当我复制到 3.4 时,我得到了同样的错误。
问题是......我需要做什么来运行/测试它?我的想法...以某种 3.4 兼容模式运行 3.5。安装 3.4(可能来自源代码,因为我找不到 Ubuntu 16.04 的 3.4 包)。也许调整一些 3.5 配置设置?也许在打包时提供一个新设置以允许 3.4 和 3.5 工作?我假设我错过了一些想法,但我不想问我认为解决方案是什么,我想知道解决方案是什么。
谷歌搜索后发现一堆与 pyc 文件有关的 SO 问题,我知道 3.4 文件不兼容,但有没有办法使用它?