python - 将整个 Python 应用程序打包为 PEX 文件

标签 python python-3.x packaging

如何将整个应用程序(包括启动脚本和程序包)打包为 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/

相关文章:

python - pandas.df.columns - 使输出在视觉上有用

python - 使用 Python 连接到 Azure 服务总线

python - 当值是列表时交换字典键和值

python - 如何实现列表

python - 使用 Python 命名空间包进行开发

python - 我们能否明确说明 python 打包和导入的工作原理?

python - 发送没有接口(interface) IP 错误的 scapy IP 数据包

python - 如何在cython中编译pyqt5和python代码

python-3.x - get_dummies 并一起计数

node.js - npm 不构建 Contextify Release - 找不到 Node 路径?