setuptools 本地打包数据文件和单个模块

问题描述 投票:0回答:1

项目有以下目录结构

LUTs/
├── pyproject.toml
├── MANIFEST.in
├── src/
│   ├── init__.py
|   ├── CountyFIPS.csv
|   ├── SCCountyFIPS.pkl
│   └── NationwideCountyFIPS.pkl

哪里

__init__.py

import pickle
from bidict import bidict
# import APIEndpoint

with open(file='LUTs/src/SCCountyFIPS.pkl', mode='rb') as sc:
    sccounties = pickle.load(sc)

with open(file='LUTs/src/NationwideCountyFIPS.pkl', mode='rb') as us:
    uscounties = pickle.load(us)

SC_COUNTIES = bidict(sccounties)

US_FIPS = bidict(uscounties)

我正在使用

setuptools
setuptools.build_meta
后端。

pyproject.toml

[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[project]
name = "LUTs"
description = "Lookup table utility; CRM tables, FIPS codes, etc."
version = "0.9"
dependencies = [
    "bidict"
]

[tool.setuptools]
include-package-data = true

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.package-data]
src = ["*.csv", "*.pkl"]

MANIFEST.in

include src/*.pkl
include src/*.csv

这将是一个仅供内部使用的包。 我不确定这是否应该是一个命名空间包,我刚刚读到我必须以不同的方式构建

.toml
。 我没有
setup.py
setup.cfg
,正如
setuptools
文档 所指出的那样

为了避免执行任意脚本和样板代码,我们正在从通过运行 setup() 定义所有包信息过渡到通过使用 pyproject.toml (或旧的 setup.cfg)以声明方式执行此操作。

为了缓解过渡的挑战,我们提供了一个快速指南来了解 setuptools 如何解析 pyproject.toml。 (或者,这里是 setup.cfg 的指南)。

跑步

python -m build

cd
进入
dist/

pip install --force-reinstall LUTs-0.9-py3-none-any.whl
pip install --force-reinstall luts-0.9.tar.gz

产生

LUTS-0.9.dist.info/

├── direct_url.json
├── INSTALLER
├── METADATA
├── RECORD
├── REQUESTED
├── top_level.txt
├── WHEEL

但没有主

.py
文件。 它安装在与
pip -V
相同的文件夹中,但仍然会产生
ModuleNotFoundError
。我在 3.12.6 上只有一个 Python 环境。

python pip setuptools
1个回答
0
投票

修改目录树为

LUTs
├── pyproject.toml
├── MANIFEST.in
└── LUTs
    ├── __init__.py
    ├── CountyFIPS.csv
    ├── SCCountyFIPS.pkl
    └── NationwideCountyFIPS.pkl

MANIFEST.in

[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[project]
name = "LUTs"
description = "Lookup table utility; CRM tables, FIPS codes, etc."
version = "0.9"
dependencies = [
    "bidict"
]

[tool.setuptools]
include-package-data = true

[tool.setuptools.packages.find]
where = ["."]
include = ["*"]

似乎有效。

© www.soinside.com 2019 - 2024. All rights reserved.