如何将整个应用程序(包括启动脚本和程序包)打包为 PEX 文件?目录结构是这样的:
|- venv
|- start.py
|- packagename
|-- otherfile.py
我可以像这样打包 start.py 文件:
cd <project directory>
. venv/bin/activate
pex -r requirements.txt -o build/application.pex -e start:main
但是当我尝试运行 application.pex 文件时,我得到:
ImportError: No module named 'start'
是我做错了什么,还是 pex 坏了?
最佳答案
Pex 似乎并没有真正执行未模块化的脚本——它有一个选项看起来可以执行您想要的操作,但实际上似乎总是落入解释器中...
我最后做的是将它包装在一个脚本中,该脚本采用裸脚本(包含 main())并将其放入一个模块中,然后将该模块与依赖项一起添加,并在您提供入口点时使用 -e'已经完成了。 setup 和 init 写在/tmp 的某个地方相当简单
前期的工作有点多,但在实践中运行良好——包装的脚本可以进行健全性检查等(取决于构建环境的设置方式)。
{记得在临时模块的设置中设置“zip-safe”标志!!}
关于python - 将整个 Python 应用程序打包为 PEX 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30852941/