Установка дополнительных файлов с помощью `python setup.pyvelop` - PullRequest
0 голосов
/ 15 января 2019

Я работаю над расширениями 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 заработал?

1 Ответ

0 голосов
/ 15 января 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...