Удаление файлов в файле setup.py data_files с помощью pip

Я сейчас пишу setup.py для моего собственного приложения Linux. Я добавил входной файл на рабочем столе, myapp.desktop в /usr/share/applications, Вот мой setup.py:

setup(...,
      data_files=[
           ('/usr/share/applications', ['myapp.desktop']),
           ('/usr/share/pixmaps', ['myapp.png'])]
     )

Я также включил myapp.desktop а также myapp.png в MANIFEST.in:

include myapp.png
include myapp.desktop

Так что я могу установить приложение, используя python setup.py install и это также установить data_files на правильном пути.

Проблема в том, когда я удаляю приложение, используя pip uninstall myapp, pip не удаляет файлы в data_files, сказать, /usr/share/applications/myapp.desktop а также /usr/share/pixmaps/myapp.png, Я должен удалить их сам.

Как я могу удалить эти файлы автоматически, используя pip uninstall?

1 ответ

Решение

Ты не можешь python setup.py install приводит к тому, что ваш пакет устанавливается с помощью setuptools, а не pip, и в результате pip недостаточно знает о пакете, чтобы полностью удалить его. Даже setuptools не может удалить ваш пакет, так как нет python setup.py uninstall команда! Если вы хотите, чтобы pip мог правильно удалить ваш пакет, вам нужно установить его с помощью pip (pip install .), но это имеет тот недостаток, что data_files файлы будут размещены рядом с установленным пакетом, а не в корневом каталоге системы (например, myapp.desktop в конечном итоге где-то как ~/.local/lib/python2.7/site-packages/usr/share/applications/myapp.desktop).

Другие вопросы по тегам