Implementazione Python in un filesystem condiviso aziendale

0

Stiamo sviluppando alcune applicazioni Python (principalmente CLI) da utilizzare solo internamente in azienda. Centinaia di macchine su cui possono essere eseguite le applicazioni. Invece di installare le app su ogni macchina, vorremmo utilizzare un filesystem di rete condiviso a cui tutti possano accedere come target di distribuzione. Alcuni pacchetti devono essere condivisi tra le app, naturalmente.

Come lo facciamo? Sembra che setuptools, pip e virtualenv siano più orientati verso le installazioni per macchina. Voglio che il mio rilascio renda gli strumenti immediatamente disponibili a qualsiasi utente su qualsiasi macchina. Nota nessun accesso root.

Tutte le ricette sono benvenute.

    
posta Dave 26.11.2018 - 06:32
fonte

1 risposta

1

La creazione di una virtualenv su un filesystem condiviso dovrebbe funzionare, sebbene gli utenti finali debbano ancora attivarla autonomamente. Ovviamente, tutto ciò che fa virtualenv è simulare alcuni eseguibili per sedersi nella parte anteriore del PATH e assicurarsi che virtualenv sia nel tuo PYTHONPATH: potresti essere in grado di scrivere script che lo fanno manualmente.

Ci sono un paio di trucchi da prendere in considerazione prima di scegliere questo metodo di implementazione:

  • I file system condivisi sono spesso relativamente lenti. Ciò renderà qualsiasi import più costoso.
  • Tutto ciò che può essere eseguibile non deve essere scrivibile da altri utenti, o che potrebbe essere abusato per progettare un worm wormable contro la tua organizzazione. La difesa in profondità è importante.
  • CPython memorizza nella cache il codice byte compilato in *.pyc file. Poiché la directory non deve essere scrivibile, questi file dovrebbero essere creati durante l'installazione. Ma questi file sono utili solo se tutti usano la stessa versione di Python. Se è possibile distribuire una versione Python specifica, è anche possibile distribuire direttamente il software.
  • Se i sistemi dell'utente finale hanno sistemi operativi o architetture CPU diversi, occuparsi delle librerie native è più difficile. Non è più possibile offrire un singolo virtualenv, ma è necessario offrirne uno per combinazione OS / architettura. Ciò rende inoltre più difficile per gli utenti finali configurare correttamente il loro sistema.

Dato che devi ancora distribuire gli script di installazione Python e virtualenv agli utenti finali, potrebbe essere molto più semplice utilizzare questi meccanismi di distribuzione anche per il tuo software Python.

Considerare anche se l'esecuzione del software sui sistemi degli utenti finali sia appropriata. Il software basato sul Web offre molta più flessibilità sulla distribuzione. Ad esempio, nella comunità di Data Science i notebook Jupyter sono uno strumento comune. È possibile installare Jupyter localmente tramite pip . Ma un'organizzazione preferisce ospitarli su un server robusto con un insieme di dipendenze garantito: una vittoria per tutti i soggetti coinvolti.

    
risposta data 27.11.2018 - 16:59
fonte

Leggi altre domande sui tag