我有一个模块,我将作为独立应用程序分发。该模块具有以下结构:
\n$ tree -L 2 ./\n./\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 mymodule\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __main__.py\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 fun.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 mymodule.pyz\n
Run Code Online (Sandbox Code Playgroud)\nmymodule/__main__.py
包含下一行:
#!/usr/bin/env python\n\nimport argparse\nimport sys\nimport os.path\nfrom mymodule.fun import Fun\n\ndef main():\n sys.stdout.write(\'main is running\')\n Fun().run()\n\nif __name__ == \'__main__\':\n main()\n
Run Code Online (Sandbox Code Playgroud)\nmymodule/fun.py
包含下一行:
#!/usr/bin/env python\n\nimport sys\n\nclass Fun:\n """FUN"""\n\n def __init__(self):\n pass\n\n def run(self):\n sys.stdout.write("fun")\n
Run Code Online (Sandbox Code Playgroud)\n如果我使用$ python -m mymodule
输出运行模块\nmain is runningfun
但是如果我使用它创建一个独立的应用程序$ python -m zipapp -p "/usr/bin/evn python" mymodule
并运行它,$ python mymodule.pyz
我会收到错误
Traceback (most recent call last):\n …
Run Code Online (Sandbox Code Playgroud)