Dan*_*Dan 2 python python-packaging
我想创建一个python zipfile并执行它。
我所做的是,首先创建以下目录和源文件:
\n\n目录树
\n\npkgtest/\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pkga\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 __main__.py\nRun Code Online (Sandbox Code Playgroud)\n\n__main__.py:
\n\nprint("SADASD")\nRun Code Online (Sandbox Code Playgroud)\n\n__init__.py:空
\n\n此时,我可以这样做:
\n\npython pkga\nRun Code Online (Sandbox Code Playgroud)\n\n它有效,但如果我运行以下命令:
\n\npython -m zipfile -c pkga.zip pkga # This generates a pkga.zip file\npython pkga.zip\nRun Code Online (Sandbox Code Playgroud)\n\n我收到以下错误:
\n\n/usr/bin/python: can\'t find \'__main__\' module in \'pkga.zip\'
我缺少什么?
\n\n这样做:
\n\npython3 -m zipapp pkga\nRun Code Online (Sandbox Code Playgroud)\n\n进而
\n\npython3 pkga.pyz\nRun Code Online (Sandbox Code Playgroud)\n\n有用。
\n\n但是,根据本教程,使用普通的 zip 文件就足够了。它是否正确?
\n该__main__.py文件必须位于 zip 文件的顶级目录中,请参见此处:
(例如包含顶级
__main__.py文件的 zip 文件)。
你必须跑
python -m zipfile -c ../pkga.zip .
Run Code Online (Sandbox Code Playgroud)
从 pkga 目录内部。当你运行时,python -m zipfile -c pkga.zip pkga你会创建一个带有目录 pkga 的 zip 文件,其中包含文件,但 python__main__.py在 zip 文件的顶层目录中查找。