如何以 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
。
我想创建一个 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
。