小编Igo*_*ets的帖子

为使用“python -m zipapp”创建的独立应用程序导入模块的正确方法是什么?

我有一个模块,我将作为独立应用程序分发。该模块具有以下结构:

\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)\n

mymodule/__main__.py包含下一行:

\n
#!/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)\n

mymodule/fun.py包含下一行:

\n
#!/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

\n

但是如果我使用它创建一个独立的应用程序$ python -m zipapp -p "/usr/bin/evn python" mymodule并运行它,$ python mymodule.pyz我会收到错误

\n
Traceback (most recent call last):\n …
Run Code Online (Sandbox Code Playgroud)

python python-import zipapp

4
推荐指数
1
解决办法
1120
查看次数

标签 统计

python ×1

python-import ×1

zipapp ×1