Я пытаюсь добавить задачу после установки в Python distutils, как описано в Как расширить distutils с помощью простой пост-установки script?. Предполагается, что задача должна выполнить Python script в установленном каталоге lib. Этот script генерирует дополнительные модули Python, которые требует установленный пакет.
Моя первая попытка следующая:
from distutils.core import setup
from distutils.command.install import install
class post_install(install):
def run(self):
install.run(self)
from subprocess import call
call(['python', 'scriptname.py'],
cwd=self.install_lib + 'packagename')
setup(
...
cmdclass={'install': post_install},
)
Этот подход работает, но, насколько я могу судить, имеет два недостатка:
- Если пользователь использовал интерпретатор Python, отличный от того, который был выбран из
PATH
, post install script будет выполняться с другим интерпретатором, который может вызвать проблему. - Он не защищен от сухого пробега и т.д., который я мог бы исправить, обернув его функцией и называя его
distutils.cmd.Command.execute
.
Как я могу улучшить свое решение? Есть ли рекомендуемый способ/наилучшая практика для этого? Я хотел бы избежать по возможности затягивания другой зависимости.