Я работаю над проектом C++, в котором процесс сборки CMake создает структуру каталогов пакетов Python (т. е. исходных файлов Python, а не общего объекта) в выбранном каталоге сборки в разделе python_packages/my_package. Я не могу изменить этот подход. Я написал сценарий setup.py, который запускает CMake и пытается добавить их в сгенерированный пакет, но я застрял. Вот где я нахожусь:
error: package directory 'my_package' does not exist
В то же время Packages: ["my_package", "my_package.sub_package"] печатается во время выполнения. Вероятно, мне следует что-то сделать с package_dir, но я запутался.
Я работаю над проектом C++, в котором процесс сборки CMake создает структуру каталогов пакетов Python (т. е. исходных файлов Python, а не общего объекта) в выбранном каталоге сборки в разделе python_packages/my_package. Я не могу изменить этот подход. Я написал сценарий setup.py, который запускает CMake и пытается добавить их в сгенерированный пакет, но я застрял. Вот где я нахожусь: [code]import os import subprocess from pathlib import Path
from setuptools import ( Extension, find_packages, setup, ) from setuptools.command.build_ext import build_ext
class CMakeExtension(Extension): def __init__(self, name): super().__init__(name, sources=[])
class cmake_build_ext(build_ext): def build_extension(self, ext): cmake_source_dir = Path.cwd()
cmake_build_dir = Path(self.build_temp) if not cmake_build_dir.exists(): cmake_build_dir.mkdir(parents=True)
cmake_preset = "debug" if self.debug else "release"
setup( name="my_project", version="1.0.0", author="Me Myself", author_email="me.myself@mymail.com", description = "CMake experiment", python_requires=">=3.12", ext_modules=[CMakeExtension("my_project")], cmdclass={"build_ext": cmake_build_ext}, zip_safe=False, ) [/code] При вызове pip install . это продолжается до тех пор, пока не будет запущен шаг build_py, где я получаю следующую ошибку: [code]error: package directory 'my_package' does not exist [/code] В то же время Packages: ["my_package", "my_package.sub_package"] печатается во время выполнения. Вероятно, мне следует что-то сделать с package_dir, но я запутался.