distutils игнорирует изменения в setup.py при создании расширения?

У меня есть файл setup.py, который создает расширение. Если я изменяю один из исходных файлов, distutils распознает это и пересобирает расширение, показывая все команды компиляции/линковки.

Однако, если единственное, что я меняю, это setup.py (я возился, пытаясь заставить работать зависимости библиотек), то он, похоже, не перестраивается (например, ни одна из команд компиляции/ссылки не отображается). Я проверил это, удалив один из исходных файлов в строке

sources = ['foo.c', 'bar.c' ...]

и когда я pip install -e . или python setup.py install, он все равно создает новый файл для расширения, но это должна быть версия, кэшированная где-то, поскольку она не должна компилироваться.

Как очистить этот кеш? я пытался

python setup.py clean --all

или используя флаги --ignore-installed и --no-cache-dir при выполнении pip install -e .

Единственный способ, который я нашел для его перестроения, - это добавить мусор в исходный файл, вызвать перестроение и ошибку, удалить мусор и снова pip install -e ....


person Dan    schedule 21.01.2016    source источник


Ответы (2)


  1. Просто удалите по пути site-packages любой файл, связанный с ним, иногда вы можете найти более одной версии или несколько файлов, упакованных в виде zip-файлов, или выполните следующую команду python setup.py clean --all.
  2. Перекомпилируйте и установите заново.

Но я рекомендую использовать python setup.py develop, так что вам не нужно будет переустанавливать его при каждом изменении, вы сможете часто редактировать свой код и вам не придется переустанавливать его снова. python setup.py install обычно используется для установки готовых к использованию сторонних пакетов.

Проверьте здесь, чтобы лучше понять упаковку Python.

Обзор:

python setup.py clean --all
python setup.py develop
person DhiaTN    schedule 21.01.2016
comment
Спасибо! python setup.py develop было именно то, что мне было нужно. Но удаление под сайт-пакетами у меня не сработало. Мне пришлось python setup.py clean --all, а затем python setup.py develop. Это сработало, ничего не удаляя под site-packages. - person Dan; 21.01.2016

мне нужно было бежать

python setup.py clean --all
python setup.py develop

Спасибо DhiaTN за то, что привели меня туда.

person Dan    schedule 21.01.2016