如何将python模块捆绑到单个[可执行] zip归档文件中?

时间:2019-01-03 07:29:47

标签: python package bundle

已经有一段时间了,因为我写了任何严肃的python代码,所以我确定我只是缺少一些愚蠢的东西...

我已经编写了几个模块,并希望将它们捆绑到一个可执行的zip归档文件中。我似乎记得这是一个相对琐碎的过程,并且以为我可以使用它,但是在添加了一些内容,重命名目录/文件等之后。我无法在错误的持续潮流中走来走去。

在研究这个问题时,我遇到了一些流行的包装,例如前奶酪店(pippy2exepy2app等。但是,我无意在线重新分发我的代码,不一定需要捆绑整个python环境。

将模块捆绑到单个跨平台(主要是unix / linux / mac环境)可执行文件中,最简单,最简单的方法是什么?

示例结构:

ProjectRoot
    |_ sub_dir
        |_ __init__.py # empty file
        |_ module1.py
        |_ module2.py
    |_ __main__.py

__main__.py的内容:

import sub_dir.module1 as sss
sss.main()

我尝试创建ProjectRoot的zip存档,但是执行该存档时,我得到以下信息:

$ python ./ProjectRoot.zip
/usr/local/opt/python/bin/python3.7: can't find '__main__' module in './ProjectRoot.zip'    

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

尝试使用zipapp模块:

$ python -m zipapp myapp -m "myapp:main"
$ python myapp.pyz

https://docs.python.org/3/library/zipapp.html