Pratiche per l'utilizzo di setuptools-less in python

-2

Il modo generale e più o meno standard di impacchettare una distribuzione python è usare setup.py, tuttavia ho visto un approccio in cui il codice non è installato, è solo invocato come script e qualsiasi libreria adiacente (cioè , fa parte della stessa base di codice, non di quella che può essere recuperata da pypi) è eventualmente resa accessibile tramite l'aggiornamento di sys.path. Si può discutere molto se si tratta di buone o cattive pratiche, ma funziona, non richiede l'installazione di pip ed è un dato di fatto in alcuni punti. Mi chiedevo se qualcuno di voi ha visto questo approccio utilizzato, i suoi svantaggi, e se si utilizza questo approccio, quali sono le opzioni per ottenere funzionalità come la ricerca delle risorse (ad esempio voglio le icone) oltre a utilizzare il percorso corrente __file__ per trovare la posizione di cose, o se ci sono modi migliori per ottenere lo stesso risultato (nessuna installazione di pip)

    
posta Stefano Borini 19.09.2018 - 10:20
fonte

1 risposta

1

Pip / setuptools fa parte del sistema Python di base. Non c'è motivo di evitarli, tranne per il fatto che la documentazione di setuptools rende difficile iniziare.

Ci sono alcune funzionalità di Python che possono rendere l'installazione tramite pip meno necessaria:

  • importazioni relative, come from .myproject import foo, bar . Questa è ancora una buona idea anche quando usi pip.
  • manipolazione del percorso manuale basata su __file__ .
  • manipolazione manuale di PYTHONPATH.

Ciò che offre un'installazione corretta è la facilità d'uso e la portabilità. Ad esempio:

  • essere in grado di distribuire la tua applicazione come ruote o uova precostruite
  • essere in grado di caricare risorse da dati di pacchetti incorporati, senza dover manipolare i percorsi da soli (notare anche che quando si esegue un uovo, non esistono percorsi)
  • essere in grado di monitorare e installare le dipendenze
  • essere in grado di installare ed eseguire su piattaforme

Un esempio per quest'ultimo punto: avevo un'applicazione che poteva essere scaricata ed eseguita direttamente o installata tramite pip. Con l'installazione manuale, gli utenti dovrebbero indicare il loro PATH alla sceneggiatura. Mentre questo ha funzionato bene sui sistemi Unix-ish, gli utenti di Windows dovevano eseguire ulteriori passaggi: avrebbero dovuto invocare manualmente Python come python3 C:\path\to\foo o avrebbero dovuto inserire un file foo.bat nel loro PATH per eseguirlo.

Trasformando l'applicazione in un modulo appropriato e utilizzando la funzionalità dei punti di accesso di setuptool, tutto ciò potrebbe essere automatizzato. L'installazione tramite pip (o python setup.py install ) è ora richiesta, ma funziona per tutti.

Potresti avere requisiti e vincoli completamente diversi. Per esempio. se controlli la distribuzione del tuo codice puoi usare o ignorare qualsiasi strumento tu (dis) desideri. Ma considerando che tre linee di piastre sono letteralmente tutto ciò di cui hai bisogno per iniziare a beneficiare di Pip, ci sono poche ragioni per non usare queste funzionalità di Python:

from setuptools import setup
setup('project-name',
      packages=['yourpackage'])
    
risposta data 19.09.2018 - 11:19
fonte

Leggi altre domande sui tag