2017-02-06 12 views
1

Я использую Distutils для распространения своего пакета, это очень удобно. Теперь я хочу выполнить скрипт или функцию после того, как пользователь установил мой пакет с помощью команды, например pip install mypackage. Я думал, что могу найти API вроде register(funtionCalledAfterPackageInstalled), как и atexit.register(someFunction), который часто использовался в python для выполнения функции до выхода приложения, но мне не удалось. Поэтому я хочу спросить: есть ли какой-нибудь изящный способ сделать такое?Как выполнить скрипт или funciton через python setuptoos?

Справочная информация: Я ссылаюсь на часто обновляемую dll в своем пакете, и я не хочу помещать его в свой pakcage, поэтому мне не нужно заботиться об обновлении. Я просто хочу, чтобы он автоматически загружался через вызов функции после того, как мой пользователь установил мой пакет. И среда - это WINDOWS, поэтому инструменты управления linux pakcage не работают.

+1

После вызова 'настройки()' в 'setup.py' вы можете выполнять другие функции Python/методов. Итак, здесь вы можете запускать программу Python или системный вызов (с подпроцессом на примере). – Arount

+0

@ Arount Wow, отлично, вот что мне нужно. Спасибо. – lengxuehx

+0

Итак, я сделаю правильный anwser, возможно, это поможет другим. – Arount

ответ

1

После вызова setup() в файле setup.py вы можете вызвать другую функцию или метод Python. Таким образом, вы можете запустить функцию python, создав то, что вам нужно, или выполнить внешнюю команду с помощью subprocess.

Это приведет к что-то вроде:

from distutil.core import setup 
import subprocess 

setup(... stuff ...) 

# Call external command  
subprocess.Popen('command here', ... attrs ...) 
# Or another Python function you wrote 
my_function()