Come rendere disponibile un eseguibile .py ovunque su OS X?

4

Ho questa directory / foo / bar / . Dentro, ho un file python chiamato myfile.py . L'ho reso eseguibile aggiungendo (in alto):

#!/usr/bin/env python

Quindi, l'ho reso eseguibile pubblicando

chmod +x myfile.py

Ho modificato il mio percorso emettendo

sudo nano /etc/paths

Ho aggiunto / foo / bar / ad esso.

Il problema è che sebbene possa eseguire myfile.py digitando ./ myfile.py mentre sono all'interno di / foo / bar / , non funziona da qualsiasi altra posizione. Cosa sto sbagliando?

Grazie.

    
posta ilovebigmacs 18.06.2013 - 15:25
fonte

2 risposte

1

Devi aggiungere /foo/bar alla tua variabile di ambiente $PATH . Passare alla directory home digitando cd al prompt, quindi digitare nano .profile . All'interno di questo file, aggiungi la seguente riga:

export PATH=$PATH:/foo/bar

quindi salva e chiudi. Esci da Terminal.app (o da qualsiasi altro programma a termine che stai utilizzando) e riavvialo. /foo/bar dovrebbe ora essere nel tuo percorso di ricerca, per assicurarti di digitare echo $PATH e vedere se è alla fine. Ora dovresti essere in grado di eseguire myfile.py da qualsiasi luogo.

    
risposta data 18.06.2013 - 15:34
fonte
0

Al tipo di terminale:

which python

assicurati che questo percorso nello shebang nella prima riga del tuo file .py. Sul mio sistema è

#!/usr/local/bin/python

quindi 1 ° tentativo:

export PATH=$PATH:/path/to/where/your/script/is

in qualsiasi terminale

controlla che il PERCORSO sia effettivamente bloccato controllando:

$PATH

dovrebbe avere il percorso per il tuo script in là ora.

ora dovresti essere in grado di lanciare il tuo modulo di script ovunque.

il PATH si ripristinerà una volta chiuso il terminale, quindi dovresti pagare per farlo ottenere definitivamente aggiunto al tuo PERCORSO.

buona soluzione è avere il seguente bit di codice in te .bash_profile:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

vedi write-up, ad es. link questo assicurerà che .bashrc sia caricato ogni volta che il terminale viene lanciato, così come quando lanciare una subshell. Metti l'esportazione

export PATH=$PATH:/path/to/where/your/script/is

line da qualche parte nel tuo file .bashrc. chiudere e riavviare il terminale. Questo dovrebbe sistemare tutto fuori

    
risposta data 20.06.2013 - 17:24
fonte

Leggi altre domande sui tag