Установка дополнительных файлов с помощью `python setup.pyvelop`

1

Я работаю над расширениями Swift для Python 2. Поскольку distutils/setuptools поддерживают только расширения C/C++, я нахожусь на крючке, чтобы изменить команды сборки, чтобы они создавали код Swift.

Мои python setup.py build и python setup.py install выглядят успешными: пакет и его содержимое находятся в правильном расположении, а собственные расширения загружаются правильно при import.

Однако моя команда предпочитает использовать pip install -e. , что в конечном итоге делает python setup.py develop, чтобы немного ускорить разработку; и как он стоит, setup.py не знает, чтобы скопировать нативные библиотеки, которые build компилирует в исходных каталогов.

В моей текущей настройке:

  • класс SwiftBuildExt (который расширяет класс Cython, потому что мы поддерживаем языковое разнообразие)...
  • ... run переопределение для создания модулей Swift, которые динамически обнаруживаются с помощью glob.
  • run добавляет записи в список, который я назову swift_modules;
  • get_output после run переопределяется для возврата базовых файлов и swift_modules.

Что мне нужно изменить, чтобы заставить develop работать?

Теги:
python-2.7
python-2.x
distutils
setuptools

1 ответ

0

Я нашел, что это чтение источника для setuptools.command.develop: develop запускает build_ext команду с inplace параметром, который говорит build_ext сохранить вывод сборки в исходном дереве. Этот параметр, как и ожидалось, можно протестировать с помощью self.inplace из подкласса build_ext. Оттуда, это только вопрос изменения места, где копируются файлы.

В Python 3 он обрабатывается по-другому, что я не исследовал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню