2013-06-30 2 views
1

Первым проектом пакета в моей библиотеке был файл foo.py, который я теперь заменил расширением Cython/C, foo.so - однако distutils не автоматически, чтобы старый файл .py исчез, поэтому оба они сидят в каталоге сайтов-пакетов после установки (и кто знает, что загружается, когда вы используете import ..)Python distutils - переопределить реализацию старого py с расширением .so C

Очевидно, что я могу вручную удалить старые файлы самостоятельно, но я не хочу, чтобы пользователям моей библиотеки приходилось заботиться о таких вещах.

Что такое канонический/distutils/pythonic способ справиться с этим? Есть некоторые синтаксис как

from distutils import setup 
setup(..., depricated=['path/to/foo.py']) 

указать устаревшие .py файлы, которые будут удалены из установки каталогов на обновление?

+0

связанный: [Как удалить пакет python, который был установлен с использованием distutils?] (Http://stackoverflow.com/q/402359/4279) – jfs

+0

umm, это совершенно конкретно касается обновления, а не удаления. та же самая цель может быть выполнена путем удаления и повторной установки true, но поскольку «distutils» не имеет функции удаления, я не думаю, что это полезно для конечных пользователей. – tehwalrus

ответ

0

Нет команды uninstall в distutils. Хотя pip может удалить старую версию автоматически, прежде чем устанавливать новую. Другие установщики также могут предоставить команду uninstall.

Попросите пользователей использовать pip, если они устанавливаются из источника. Большинство двоичных форматов, таких как rpm, deb, msi, деинсталлируют по умолчанию. btw, fpm обеспечивает простой способ конвертировать пакеты python.

Вы можете использовать python -v, чтобы узнать, какие файлы загружены для вашего модуля. .so может иметь более высокий приоритет, но вы не должны полагаться на него в этом случае и вместо этого удалять старую версию.

+0

Благодарим вас за ответ, но я оставлю этот вопрос открытым, если у кого-то есть умный способ справиться с этим - я надеюсь, что есть лучший способ, чем добавить некоторые хаки в мой setup.py для поиска устаревших/вредоносных файлов. – tehwalrus

+0

@tehwalrus: В ответ я не вижу никаких указаний на добавление хакетов в 'setup.py'. – jfs

+0

Вопрос в том, что я делаю, чтобы конечные пользователи не должны были беспокоиться об этом (* «но я не хочу, чтобы пользователи моей библиотеки так заботились об этом».). Они собираются запустить 'setup.py', и все, поэтому, чтобы« удалить старую версию », как вы предлагаете, я должен поместить некоторые« там »? да? удалите его «взломать setup.py», чтобы он запускался всякий раз, когда команда 'install' (т. е. когда у нас будут права на запись в каталог установки). Я знаю, что вы явно не предлагали его, но он должен следовать вашим инструкциям. – tehwalrus

Смежные вопросы