Rendere l'esecuzione dello script Python infallibile oltre l'aggiunta di shebang

0

Supponiamo che un pacchetto Python (disponibile tramite PyPI) sia troppo difficile da utilizzare per gli utenti inesperti. In particolare, digitando python2 path_to_package/start_GUI.py nella riga di comando, che apre una GUI di TKinter, è troppo difficile per molti utenti. Invece, gli utenti desiderano semplicemente fare doppio clic sul file start_GUI.py , indipendentemente dal sistema operativo in cui si trovano.

Oltre a mettere uno shebang (cioè #!/usr/bin/env python2 ) nella parte più alta dello script Python start_GUI.py , in quale altro modo posso rendere più semplice l'esecuzione da parte degli utenti?

Linux / OSX :

Gli utenti su Linux / OSX potrebbero fare doppio clic su start_GUI.py se prima hanno modificato i permessi dei file (cioè chmod +X start_GUI.py ). È possibile modificare le autorizzazioni del file di start_GUI.py durante l'installazione del pacchetto tramite setup.py ?

di Windows :

Gli utenti su Windows potrebbero fare doppio clic su un file batch (ad esempio start_GUI.bat ), che a sua volta chiama start_GUI.py . Esempio minimo di start_GUI.bat :

ECHO ON
REM A batch script to execute the GUI
SET PATH=%PATH%;C:\path_to_python\Python27
python path_to_package\start_GUI.py
PAUSE

Posso scrivere questo file batch durante l'installazione del pacchetto tramite setup.py ?

    
posta Michael Gruenstaeudl 30.11.2018 - 16:29
fonte

1 risposta

3

Gli utenti non dovrebbero scrivere script di avvio, ecco perché setuptools può crearli per te con la chiave entry_points . Ad esempio:

setup(
  ...,
  entry_points={
    'console_scripts': [
      'myprogram=mypackage:main',
     ],
  },
)

Ciò creerebbe un% co_de eseguibile% in un formato appropriato per il sistema operativo di destinazione che fondamentalmente fa:

import sys
from mypackage import main

sys.exit(main())

Per ulteriori informazioni, leggi Creazione automatica degli script nei documenti setuptools.

    
risposta data 30.11.2018 - 16:45
fonte

Leggi altre domande sui tag