如何以 zip 格式执行 python 包

How to execute a python package in zip format

我想创建一个 python zipfile 并执行它。

我做的是,首先创建以下目录和源文件:

目录树

pkgtest/
└── pkga
    ├── __init__.py
    └── __main__.py

__main__.py:

print("SADASD")

__init__.py: 空

此时,我可以做到:

python pkga

它有效,但是如果我 运行 以下命令:

python -m zipfile -c pkga.zip pkga   # This generates a pkga.zip file
python pkga.zip

我得到以下错误:

/usr/bin/python: can't find '__main__' module in 'pkga.zip'

我错过了什么?

编辑

这样做:

python3 -m zipapp pkga

然后

python3 pkga.pyz

有效。

但是,根据 this tutorial 的说法,使用普通的 zip 文件应该就足够了。这是正确的吗?

使用 zipapp 模块创建 ZIP 存档。

python -m zipapp pkga
python pkga.pyz

.pyz 文件是 ZIP 存档。

__main__.py 文件必须位于 zip 文件的顶级目录中,请参阅 here:

(e.g. a zipfile containing a top-level __main__.py file).

你必须运行

python -m zipfile -c ../pkga.zip .

从 pkga 目录中。当您 运行 python -m zipfile -c pkga.zip pkga 时,您创建了一个 zip 文件,其中包含目录 pkga,其中包含文件,但 python 在 zip 文件的顶级目录中查找 __main__.py