Flusso di lavoro per contribuire alle librerie Python sotto virtualenv

1

Diciamo che voglio contribuire a thislib , che è una libreria Python disponibile come repository Git. Diverse applicazioni, come thislib_app , utilizzano questa libreria e voglio contribuire a thislib e vedere come funzionano le mie ottimizzazioni per thislib_app (possiamo dire che thislib_app è come un test di una grande unità).

Ecco il mio flusso di lavoro:

  1. Clona il thislib_app repo
  2. Crea un virtualenv chiamato lib_env e installa thislib
  3. Esegui thislib_app . Oh no! Qualcosa si rompe, ma è colpa di thislib .
  4. Vai all'interno di lib_env/local/lib/python/site-packages/thislib/x.py e apporta le modifiche necessarie
  5. Prova di nuovo. Funziona!

Ora per rendere note queste modifiche ai manutentori, devo clonare un fork del repository di thislib , copiare OLTRE le modifiche apportate in virtualenv al mio ramo di sviluppo e creare un PR. Se decido di apportare ulteriori ottimizzazioni / modifiche, dovrei ripetere nuovamente questo processo di copia.

Che cosa posso fare per garantire un flusso di lavoro efficiente in cui non devo spostare le mie modifiche e ottenere immediatamente un PR?

    
posta UncleAlan 20.07.2018 - 21:17
fonte

1 risposta

0

La soluzione è la modalità di sviluppo di pip (in realtà solo setuptools):

  1. crea un virtualenv per la tua app
  2. git-clone il repository della libreria
  3. all'interno del virtualenv, installa la libreria utilizzando python setup.py develop o pip install -e . (il -e sta per modificabile)

Ora, qualsiasi modifica alla libreria sarà immediatamente disponibile nella virtualenv, non è necessaria alcuna copia aggiuntiva.

Puoi commettere e inviare le modifiche apportate nel repository git.

Lo svantaggio è che questo richiede di avere sempre uno stato funzionante della libreria estratto mentre si desidera utilizzare l'app. Ci saranno anche restrizioni se il tuo setup.py fa qualcosa di intelligente, ad es. se la libreria contiene estensioni compilate o se stai aggiungendo nuovo entry_points .

    
risposta data 20.07.2018 - 21:45
fonte

Leggi altre domande sui tag