Altre azioni in setup.py per l'installazione

1

Sfondo

Quindi sto sviluppando un progetto, e sto scrivendo script setup.py per esso, usando distutils. Sto usando CPython3.3.

Uso alcune librerie con distribuzioni non valide in PyPI, quindi devono essere installate clonando il repository e eseguendo setup.py manualmente (ho provato molte cose, entrambe le librerie mi hanno detto che ho solo bisogno di usare git invece di PyPI , quindi perché ho bisogno di farlo in questo modo non è una domanda qui).

Quindi, ho usato qualche magia di sottoprocesso, e ho creato uno script che cloni i repository e che esegue "setup.py install" al loro interno. Esegue anche app setup.py, dopo aver verificato che le librerie danneggiate siano già installate in altro modo. È facile da convertire in diversi metodi e sarà migliorato in pochi istanti. Al momento la mia app può essere installata eseguendo questo script (l'ho chiamato build.py).

Domanda

Come faccio a creare un hook nel mio script setup.py (per la mia app) che eseguirà metodi che installano cose da github quando (e SOLO quando) l'argomento "install" è stato passato a apps setup.py?

Quello che ho provato

Ho provato frasi googling come "come faccio ad agganciare setup.py" - più o meno generico, ho provato diverse domande. Non è stato trovato nulla.

Inoltre, ho cercato di analizzare la fonte di distutils, per trovare un modo, ma questo non mi ha portato da nessuna parte.

Non l'ho ancora provato, ma so che è fattibile - all'inizio dello script setup.py che verifica se condizioni come "è eseguito come script principale" e "'installano' la parola chiave è in sys.argv" sono vero, e se è così - eseguendo i miei metodi relativi a git, ma questo è brutto da morire.

    
posta Filip Malczak 06.01.2014 - 15:10
fonte

1 risposta

4

non gestisci l'installazione delle dipendenze in setup.py . Gestisci solo il packaging del tuo progetto e lascia le dipendenze agli strumenti specializzati come pip e buildout .

Se in futuro questi pacchetti vedranno versioni migliori su PyPI, tutto ciò che devi fare è modificare le istruzioni di installazione, non creare una nuova versione con un nuovo setup.py, anche se nessuna funzionalità è stata modificata.

Puoi fornire un file requirements.txt per l'installazione pip , o un buildout.cfg per buildout , entrambi i quali possono includere informazioni per consentire alle dipendenze di pull tool direttamente da github anziché da PyPI.

Vedi link per un buon post sul blog sullo stesso argomento.

    
risposta data 06.01.2014 - 15:33
fonte

Leggi altre domande sui tag