Выполните скрипт установки Python после установки, используя distutils / setuptools
Я пытаюсь добавить задачу после установки в дистрибутив Python, как описано вКак расширить distutils с помощью простого скрипта после установки?, Задача должна выполнить скрипт Pythonв установленной директории lib, Этот скрипт генерирует дополнительные модули 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
, скрипт после установки будет выполнен сразные интерпретатор, который может вызвать проблемы.Это небезопасно против пробного запуска и т. Д., Который я мог бы исправить, обернув его в функцию и вызвав егоdistutils.cmd.Command.execute
.Как я могу улучшить свое решение? Есть ли рекомендуемый способ / лучшие практики для этого? Я хотел бы, если это возможно, избежать другой зависимости.