有没有办法在构建 PEX 时包含额外的文件(即 MANIFEST.in)?

Is there a way to include extra files when building a PEX (i.e. with MANIFEST.in)?

我有一个类似于下面的目录结构:

├── myproj
│   ├── utils.py
│   ├── __init__.py
│   ├── routes
│   │   ├── __init__.py
│   │   ├── auth.py
│   │   └── stuff.py
├── html
│   ├── index.html
│   └── about.html
├── MANIFEST.in
├── setup.cfg 
└── setup.py

MANIFEST.in的内容是:

graft html

下面的 post 暗示可以使用 MANIFEST.in 与 PEX (Python PEX: Pack a package with its sub-packages) 但是当我 运行 pex . -o myprojectpython setup.py bdist_pex 不包括 html/ 目录,通过 unzip -Z1 myproject 在结果输出中验证,但在 运行ning python setup.py sdist.

时包含

如何在构建 PEX 二进制文件时包含这些额外的 html 文件?

仅定义 MANIFEST.in 是不够的。您还需要在 setup.cfg.

中将 include_package_data 选项设置为 True

此选项将包括在包中找到的额外文件,因此您还必须将 html 目录移动到 myproj 包中。

因此目录结构如下所示:

├── myproj
│   ├── utils.py
│   ├── __init__.py
│   ├── routes
│   │   ├── __init__.py
│   │   ├── auth.py
│   │   └── stuff.py
│   ├── html
│   │   ├── index.html
│   │   └── about.html
├── MANIFEST.in
├── setup.cfg 
└── setup.py

MANIFEST.in的内容是:

graft myproj/html

并且 setup.cfg 包含在 [options] 部分:

include_package_data = True