首页 > 解决方案 > 在 Python 包中包含 SQLite 扩展

问题描述

我正在编写一个包来检查我从 CSV 文件中获取的信息,我想包含 csv SQLite 扩展,以便能够从非常大的文件中导入信息(我已经使用过 Pythoncsv模块,与SQLite 扩展),问题是我不知道如何在不setup.py将其转换为 Python 扩展的情况下将其包含在包中。

这是包分发:

.
├── pyproject.toml
├── README.md
├── setup.cfg
├── setup.py
└── src
    ├── people_data
    │   ├── classes.py
    │   ├── people_data.py
    │   └── __init__.py
    └── sqlite
        ├── ...
        └── ext
            ├── ...
            └── misc
                ├── ...
                └── csv.c

sqlite包含 SQLite 源代码,我需要它来获取 .csv 扩展名csv.c

我的setup.py样子是这样的(包元数据的其余部分在setup.cfg

import setuptools

csv_ext = setuptools.Extension(
    name='csv',
    sources=['src/sqlite/ext/misc/csv.c'],
    libraries=['sqlite3']
)

setuptools.setup(
    ext_modules = [csv_ext]
)

使用该代码,我可以编译库并使用 创建一个轮子python -m build,但扩展名被重命名为csv.cpython-39-x86_64-linux-gnu.so,我需要调用它才能将csv.so其加载到 SQLite 中。

(对不起,我的英语不好)。

标签: pythonsqlitecsv

解决方案


推荐阅读