Как установить пакеты Python, созданные CMake, с помощью инструментов установки?Python

Программы на Python
Ответить
Anonymous
 Как установить пакеты Python, созданные CMake, с помощью инструментов установки?

Сообщение Anonymous »

Я работаю над проектом C++, в котором процесс сборки CMake создает структуру каталогов пакетов Python (т. е. исходных файлов Python, а не общего объекта) в выбранном каталоге сборки в разделе python_packages/my_package. Я не могу изменить этот подход. Я написал сценарий setup.py, который запускает CMake и пытается добавить их в сгенерированный пакет, но я застрял. Вот где я нахожусь:

Код: Выделить всё

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"

cmake_env = os.environ.copy()

cmake_cmd = [
"/usr/bin/cmake",
"-S", cmake_source_dir,
"-B", cmake_build_dir,
"--preset", cmake_preset
]

subprocess.check_call(cmake_cmd, cwd=cmake_build_dir)

cmake_build_cmd = [
"/usr/bin/cmake",
"--build", cmake_build_dir,
]

subprocess.check_call(cmake_build_cmd, cwd=cmake_build_dir)

packages_dir = cmake_build_dir / "python_packages"

packages = find_packages(packages_dir)
print("Packages:", packages)

self.distribution.packages = packages

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,
)
При вызове pip install . это продолжается до тех пор, пока не будет запущен шаг build_py, где я получаю следующую ошибку:

Код: Выделить всё

error: package directory 'my_package' does not exist
В то же время Packages: ["my_package", "my_package.sub_package"] печатается во время выполнения. Вероятно, мне следует что-то сделать с package_dir, но я запутался.

Подробнее здесь: https://stackoverflow.com/questions/792 ... etup-tools
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»