Pytanie Jak uruchomić plik skryptowy w ramach instalacji pythona setup.py?


Pytanie

Wiem, jak korzystać setup.py z setuptools zarejestrować skrypt. Jak uruchomić inny plik skryptu (powiedzmy a make plik) jako część python setup.py install.

tło

Wyobrażam sobie, że użyłbym czegoś takiego jak:

os.system('make maketarget') #from somewhere in the package

Ale setuptools.setup otrzymuje dyktando, więc nie mogę po prostu dodać tej linii do środka setup()/ i potrzebuję skryptu do uruchomienia po zainstalowaniu pakietu podstawowego setup.py install.

Wiem, że mogę dodać polecenie do setup.py ale chcę, aby ten skrypt został wywołany w kroku instalacji.

Mogę również domyślnie po prostu umieścić:

if sys.argv[-1] == 'install':
    os.system('do something in the shell')

i po prostu umieść ten blok po setupie (), ale jakoś to nie wygląda bardzo pytonowo (a także podatne na błędy, muszę znaleźć gdzie ten pakiet jest zainstalowany dokładnie itd.)


12
2018-03-15 18:54


pochodzenie




Odpowiedzi:


Możesz podklasować istniejące polecenie instalacji z setuptools i rozszerzyć je o pożądaną funkcjonalność. Następnie możesz zarejestrować go jako polecenie instalacji w funkcji konfiguracji:

from setuptools.command.install import install

class MyInstall(install):

    def run(self):
        install.run(self)
        print("\n\n\n\nI did it!!!!\n\n\n\n")

# in the setup function:
cmdclass={'install': MyInstall}

Zamiast instrukcji print po prostu wywołaj swój skrypt.

Należy pamiętać, że istnieje wiele sposobów pakowania oprogramowania Pythona (jaja itp.). Twój skrypt nie zostanie wywołany w ten sposób, jeśli wywołasz go tylko w kroku instalacji.


6
2018-05-17 12:28